我想为C ++应用程序编写一个插件(DLL),但我想使用C#。这可能吗?我无法访问C ++代码,因此无法对其进行修改。
从我收集的内容来看,C ++(主机)应用程序只调用不同的函数。
这是一个C ++示例插件函数:
void On_Start(HINSTANCE hInstance,HWND hWnd,BOOL bLogSet,int nDLLID,char * szHotKey)
这将如何转换为可以从此C ++应用程序加载的C#DLL?
答案 0 :(得分:5)
不是直接的,但你可以在C ++ / CLI中编写一个shim来导出本机函数,然后将实际的实现委托给C#程序集。
但请记住,这可能可能一个坏主意 - 只有一个版本的CLR可能在给定进程中运行,因此如果其他人为C ++应用程序编写托管插件针对CLR的不同版本而不是插件,会导致致命的运行时错误。
答案 1 :(得分:0)
This project为类中的静态方法创建dll导出。这可能是一个更清洁的解决方案。