2012-03-17 108 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