从C+调用C#dll+; 我有一个本地C++ DLL,我想导入一个C*ydll,并使用它的一些函数(例如连接到数据库)。

从C+调用C#dll+; 我有一个本地C++ DLL,我想导入一个C*ydll,并使用它的一些函数(例如连接到数据库)。,c#,c++,dll,clr,typelib,C#,C++,Dll,Clr,Typelib,现在我已经读到,您可以将DLL转换为TLB COM文件,我已经做到了,没有问题。我的问题在于C++。要调用该TLB文件,我需要设置CLR支持。我使用themida帮助保护我所有的DLL以及PEC。它们不支持.net DLL,当我启用CLR时,程序会将其识别为.net DLL 无论如何,在一个纯C++的DLL内部调用一个C++函数,而不启用CLR? < P>,我认为最好的方法是用一个C++/CLI库来表示层间的通信。 此第三方库将在启用/clr的情况下编译 然后,您可以使用头定义到适当的C++函数

现在我已经读到,您可以将DLL转换为TLB COM文件,我已经做到了,没有问题。我的问题在于C++。要调用该TLB文件,我需要设置CLR支持。我使用themida帮助保护我所有的DLL以及PEC。它们不支持.net DLL,当我启用CLR时,程序会将其识别为.net DLL


无论如何,在一个纯C++的DLL内部调用一个C++函数,而不启用CLR?

< P>,我认为最好的方法是用一个C++/CLI库来表示层间的通信。 此第三方库将在启用/clr的情况下编译

然后,您可以使用头定义到适当的C++函数包装器调用C函数。


C++/CLI可以帮助您按照所需的方式管理调用,并让您按照所需的方式设计类型转换。

我认为最好的方法是包装一个C++/CLI库,用于在层之间进行通信

此第三方库将在启用/clr的情况下编译

然后,您可以使用头定义到适当的C++函数包装器调用C函数。


C++/CLI可以帮助您按照所需方式管理调用,并让您按照所需方式设计类型转换。

+1。我想说,Yochai的回答不仅是最好的方式,也是唯一合理的方式。这件事我已经做了很多次了,其他的都没用。我想说,Yochai的回答不仅是最好的方式,也是唯一合理的方式。我已经做过很多次了,其他的都没用。