可以为C ++应用程序编写C#DLL(插件)吗?

时间:2011-04-25 15:46:39

标签: c# c++ plugins interop

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

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

这是一个C ++示例插件函数:

void On_Start(HINSTANCE hInstance,HWND hWnd,BOOL bLogSet,int nDLLID,char * szHotKey)

这将如何转换为可以从此C ++应用程序加载的C#DLL?

2 个答案:

答案 0 :(得分:5)

不是直接的,但你可以在C ++ / CLI中编写一个shim来导出本机函数,然后将实际的实现委托给C#程序集。

但请记住,这可能可能一个坏主意 - 只有一个版本的CLR可能在给定进程中运行,因此如果其他人为C ++应用程序编写托管插件针对CLR的不同版本而不是插件,会导致致命的运行时错误。

答案 1 :(得分:0)

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