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

Sof*_*Kng 2 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?

ild*_*arn 5

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

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