2012-03-17 110 views
1

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

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

有没有办法在不启用CLR的情况下从本地C++ DLL中调用.net DLL中的c#函数?

回答

3

我认为最好的方法是创建一个C++/CLI库,您可以使用它们在图层之间进行通信。

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

然后你可以使用头文件定义到合适的C++函数包装来调用C#函数。

C++/CLI可以帮助您按照您希望的方式管理调用,并让您按照自己的需要设计类型。

+0

+1。我想说Yochai的回答不仅仅是最好的方式,它也是唯一合理的方式。我做了很多次,没有其他的工作。 – 2012-03-17 17:55:24