从 C++ 调用 C# dll
Posted
技术标签:
【中文标题】从 C++ 调用 C# dll【英文标题】:Calling C# dll from C++ 【发布时间】:2012-03-17 17:15:19 【问题描述】:我有一个原生 C++ DLL,我想导入一个 C# DLL 并使用它的一些功能(例如连接到数据库)。
现在我了解到您可以将 DLL 转换为 TLB COM 文件,而且我已经做到了,没有任何问题。我的问题在于 C++。要调用该 TLB 文件,我需要设置 CLR 支持。我使用themida 来帮助保护我所有的DLL 以及PEC。它们不支持 .net DLL,当我启用 CLR 时,程序会将其识别为 .net DLL。
是否可以在不启用 CLR 的情况下从本机 C++ DLL 中调用 .net DLL 中的 c# 函数?
【问题讨论】:
【参考方案1】:我认为最好的方法是创建一个 C++/CLI 库,您可以使用它在层之间进行通信。
此第 3 方库将在启用 /clr 的情况下编译。
然后,您可以使用适当的 c++ 函数包装器的标头定义来调用 C# 函数。
C++/CLI 可以帮助您按照您想要的方式管理调用,并让您按照您想要的方式设计类型转换。
【讨论】:
+1。我想说,洋柴的回答不仅是最好的方式,也是唯一合理的方式。我已经这样做了很多次,但没有其他任何工作。以上是关于从 C++ 调用 C# dll的主要内容,如果未能解决你的问题,请参考以下文章
从 C# 调用 C++ dll 并抛出 SEHException