【发布时间】:2010-03-11 13:27:37
【问题描述】:
如何导出 C# 类库中定义的函数,同时将它们导入非托管 C++ 应用程序/DLL 并从中调用它们?
【问题讨论】:
如何导出 C# 类库中定义的函数,同时将它们导入非托管 C++ 应用程序/DLL 并从中调用它们?
【问题讨论】:
严格来说,您不能像在经典 .dll 中那样只导出函数,因为 .NET .dll 根本不是真正的 .dll。您仅有的三个选项是:
【讨论】:
您的 C++ 应用程序必须从托管 CLR 开始。 .NET DLL 没有什么特殊要求。
【讨论】:
你不会的。不支持。您几乎只能从 C# 类库中导出 COM 对象。
【讨论】:
您还可以为您的 C# 库创建一个 C++ 包装器 - 一个简单的托管 C++ DLL,它可以导入 .NET 方法并以本机方式导出它们。这增加了一个额外的层,但如果 C# 库是必须的,它可能会很有用。
另一个选项是调整已编译的程序集以导出函数。 C# 编译器无法做到这一点,但需要稍微更改 MSIL 代码才能完成这些工作。 看看this article - 有一些关于这些东西如何工作的链接,以及一个自动化它的工具(虽然我自己没有尝试过)。
【讨论】: