从 .net DLL 导出本机 C 函数

本文关键字:本机 函数 net DLL | 更新日期: 2023-09-27 17:56:26

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

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

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

谢谢安德鲁

从 .net DLL 导出本机 C 函数

查看非托管导出。

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

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

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