我試圖找出如何能工作:機DLL調用一個.NET的DLL
- 我有一個.NET的DLL,說NETDll.dll,我沒有源代碼進行修改。
- 我想使用NETDll.dll在我的C++項目,該項目將創建一個本地的dll,說NativeDll.dll
因此,這裏是我認爲問題出在哪裏(我可能是錯的tho):
- 由於我的NativeDll.dll是本機的,因此它不能是CLR/CLI dll。本機dll沒有運行時引擎,但CLR的確。
我該怎麼做?感謝您的任何建議。
我試圖找出如何能工作:機DLL調用一個.NET的DLL
因此,這裏是我認爲問題出在哪裏(我可能是錯的tho):
我該怎麼做?感謝您的任何建議。
你將不得不在.NET程序集中公開某些東西。
使用C++/CLI,您的本地DLL可以是混合模式native-and.NET組件。谷歌或搜索「#pragma managed」/「#pragma unmanaged」,或查看C++/CLI上的任何書籍。基本上,假設你有Visual C++ 2010或2012年,你可以寫這樣的事情:
#pragma unmanaged
int main()
{
CallManagedTrampoline();
}
#pragma managed
void CallManagedTrampoline()
{
TypeFromDotnetDLL t = new TypeFromDotnetDLL();
t.CallSomething();
}
事實上,這取決於什麼是在.NET的DLL的細節,你甚至可能不會需要把使用#pragma在CallManagedTrampoline()調用之前進行管理 - 有時您可以直接從非託管代碼進行調用。 C++/CLI是你的朋友。
我該怎麼做?我沒有訪問.NET DLL的源代碼 – 2013-05-10 20:58:59
@NickTsui你可能不得不寫一個包裝器。 – 2013-05-10 21:53:44
如何編寫包裝?我發現了一些源代碼,但它們似乎都可以訪問託管的C#代碼,這是我沒有的。 – 2013-05-12 20:47:16