从.net DLL导出本机C函数?

我有一个用C#编写的.net程序集,我想从程序集中导出本机C函数。

我有一个应用程序,它将在’plugin’文件夹中的任何DLL上执行’LoadLibrary()’。 加载DLL后,应用程序执行’GetProcAddress’查找名为’Register’的函数。 应用程序希望此函数遵循C调用约定。

如何从我的.net程序集中导出一个名为“Register”的函数,这样我就可以成功地与该应用程序的插件系统连接?

谢谢,安德鲁

使用此工具 。

在托管C ++中编写.Net库,然后可以导出“Native”方法/函数。

遗憾的是,Microsoft不支持此function,您必须在构建后更改msil以公开这些方法。 有可能因为一个人已经在codeproject或者这里展示了一个合理的解决方案,但是它需要一个构建后的步骤,之后你就可以自己动手了。 我不知道这个黑客是否可以在.net 4.0或更高版本上运行。 希望微软会听取我们的意见并在C#中支持这个简单的function,因为CLR支持已经存在。

你想要的是反向P / Invoke 。 您实际上无法在C#dll中嵌入C函数,如果你的意思是在C中实际实现的函数,但是通过遵循链接页面上给出的教程,您可以创建一个可由非托管C / C ++代码调用的DLL导出。