2012-05-04 57 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中。