我有一个原生的C ++ DLL,我想导入一个C#DLL并使用它的一些功能(例如连接到数据库)。
现在我已经读过你可以把DLL变成TLB COM文件了,我没有遇到任何问题。我的问题在于C ++。要调用该TLB文件,我需要设置CLR支持。我使用themida来帮助保护我的所有DLL以及PEC。它们不支持.net DLL,当我启用CLR时,程序将其识别为.net DLL。
无论如何在没有启用CLR的情况下从本机C ++ DLL中调用.net DLL中的c#函数?
答案 0 :(得分:3)
在我看来,最好的方法是创建一个C ++ / CLI库,您可以使用它来在层之间进行通信。
将在启用/ clr的情况下编译此第三方库。
然后,您可以将头定义用于正确的c ++函数包装器以调用C#函数。
C ++ / CLI可以帮助您按照自己的方式管理调用,并让您按照自己的方式设计类型。