2012-05-04 79 views
0

我從託管C++應用程序調用C#dll。 C#dll將在一個自定義文件夾中,因此我需要Managed C++ dll從該文件夾動態地加載C#。Assembly :: LoadFrom從託管C++調用dll

這是所有VC++ 2010 v100和.net 4.0。

我打算用

Assembly::LoadFrom("MyCSharp.dll") 

我可以看到LoadFrom調用成功,並加載MyCSharp.DLL,但是當我的託管C++ DLL中的函數試圖訪問的該DLL的任何功能,它或者:

a)沒有,如果MyCSharp.DLL不存在於同一個文件夾執行我的應用程序

b)則成功,如果MyCSharp.dll存在於執行文件夾,但是,現在我已經得到了兩個副本加載到內存中,我顯然是n不能訪問從我的:: LoadFrom調用加載的。

我不知道是什麼阻止執行函數與明確加載的C# - DLL鏈接。

我懷疑它是VC++管理的C++ dll中的一個可能的配置問題,我不知道。

+0

我確定你的意思是C++/CLI,而不是Managed C++?這些是不同的語言,並且已棄用Managed C++。 – Botz3000

+0

有幫助嗎? –

回答

0

如果您的Dll位於子目錄中,則需要將該文件夾添加到AppDomain的私有路徑。據我所知,一旦AppDomain被創建,它就不能被改變,所以你需要使用<probing> Element將它添加到app.config中。