我有一个托管的C++程序集,通过标准的LoadLibrary()调用在非托管的C++应用程序中动态加载。托管的C++程序集依赖于其他几个托管的(C#)程序集。一切都很正常,直到我将所有托管的程序集移动到非托管应用程序的子目录中。例如:
- 托管的C++ .dll (MyCoolDll.dll) - 依赖于DotNetDll1.dll - 依赖于DotNetDll2.dll - 非托管的C++应用程序(MyCoolApp.exe) - 通过LoadLibrary("MyCoolDll.dll")加载MyCoolDll.dll
这一切都很正常,直到我将MyCoolDll.dll、DotNetDll1.dll和DotNetDll2.dll移动到/someSubDirectory下(同时更新了MyCoolApp.exe中的代码以LoadLibrary("someSubDirectory/MyCooldll.dll"))。
我猜当加载MyCoolDll.dll时,它试图在工作目录中查找DotNetDll1.dll和DotNetDll2.dll,而不是它所在的目录。
那么,我该如何告诉MyCoolDll.dll它的依赖项在子目录中呢?它是在非托管应用程序内运行的库,因此我认为我不能在app.config或其他任何地方指定这个?
- 托管的C++ .dll (MyCoolDll.dll) - 依赖于DotNetDll1.dll - 依赖于DotNetDll2.dll - 非托管的C++应用程序(MyCoolApp.exe) - 通过LoadLibrary("MyCoolDll.dll")加载MyCoolDll.dll
这一切都很正常,直到我将MyCoolDll.dll、DotNetDll1.dll和DotNetDll2.dll移动到/someSubDirectory下(同时更新了MyCoolApp.exe中的代码以LoadLibrary("someSubDirectory/MyCooldll.dll"))。
我猜当加载MyCoolDll.dll时,它试图在工作目录中查找DotNetDll1.dll和DotNetDll2.dll,而不是它所在的目录。
那么,我该如何告诉MyCoolDll.dll它的依赖项在子目录中呢?它是在非托管应用程序内运行的库,因此我认为我不能在app.config或其他任何地方指定这个?