2011-04-25 63 views
2

我想为C++应用程序编写一个插件(DLL),但我想使用C#。这可能吗?我无法访问C++代码,因此我无法修改它。可能为C++应用程序编写C#DLL(插件)?

从我收集的内容来看,C++(主机)应用程序只是调用不同的函数。

下面是一个C++样本插件功能:

无效On_Start(HINSTANCE的hInstance,HWND的HWND,BOOL bLogSet,诠释nDLLID,字符* szHotKey)

这将如何转化为一个C#DLL可以加载从这个C++应用程序?

回答

5

不是直接的,但您可以在C++/CLI中编写一个垫片,用于导出本地函数,然后将实际实现委托给C#程序集。

请记住,但是,这是可能一个坏主意 - 在CLR可以在给定的进程中运行的只有一个版本,所以如果别人编写的靶向不同的C++应用程序管理插件CLR的版本比你的插件所做的,那么将导致致命的运行时错误。

+0

太好了,谢谢!有没有这样的例子? – SofaKng 2011-04-25 15:53:59

+0

@SofaKng:这正是C++/CLI首先存在的原因,所以任何C++/CLI教程都可能包含类似的东西。 – ildjarn 2011-04-25 15:54:48

+0

从Framework 4.0开始,他们现在支持将多个版本的CLR加载到单个进程中,请参阅In-Process并行或In-Proc SxS条款。据我所知,其中一个用例专门用于插件。 – 2011-04-25 16:12:51

0

This project为类中的静态方法创建dll导出。这可能是更清洁的解决方案。

相关问题