【发布时间】:2011-10-24 09:43:09
【问题描述】:
我有一个托管 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/MyColdll.dll")
我猜当加载 MyCoolDll.dll 时,它试图在工作目录中找到 DotNetDll1.dll 和 DotNetDll2.dll,而不是它所在的目录。
如何告诉 MyCoolDll.dll 其依赖项位于子目录中?它是一个在非托管应用程序中运行的库,所以我认为我不能在 app.config 或任何内容中指定它?
【问题讨论】:
-
哇,汉斯,成功了!我真的很怀疑,因为 MyCoolApp.exe 只是一个普通的旧 Win32 应用程序(不是 .NET),所以我认为为其添加应用程序配置文件无济于事。谢谢!你想把它写成答案而不是评论,我会把它标记为接受吗?
标签: .net c++ c++-cli managed-c++ loadlibrary