14

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

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

如何从我的 .net 程序集中导出名为“Register”的函数,以便成功连接该应用程序的插件系统?

谢谢,安德鲁

4

4 回答 4

11

使用这个工具

于 2011-05-13T14:57:40.653 回答
3

在托管 C++ 中编写一个 .Net 库,您可以在其中导出“本机”方法/函数。

于 2011-06-18T16:04:30.163 回答
1

遗憾的是 Microsoft 不支持此功能,您必须在构建后更改 msil 以公开这些方法。有可能有人在codeprojecthere上展示了一个合理的解决方案,但它需要一个后期构建步骤,之后你就得靠自己了。我不知道这个 hack 是否适用于 .net 4.0 或更高版本。希望 Microsoft 会倾听我们的意见并支持 C# 中的这个简单功能,因为 CLR 支持已经存在。

于 2011-07-07T16:17:31.577 回答
0

你想要的是一个Reverse P/Invoke。您实际上不能在 C# dll 中嵌入 C 函数,如果您的意思是在 C 中实际实现的函数,但是按照链接页面上给出的教程,您可以创建可由非托管 C/C++ 代码调用的 DLL 导出.

于 2011-05-13T14:55:52.220 回答