从 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

如何从 c++ 项目中调用用 c# 创建的 dll 文件? [复制]

从 C# 调用 C++ dll 方法/类

从 C++ 调用 C# dll(MSVC 编译器)

从 C# 调用 C++ dll 函数时出现问题

从 C# 调用 C++ 代码而不创建 dll?