我使用 VS2012 编写了一个 C++/CLI DLL。我的 C++/CLI DLL 包装了第三方原生 DLL。反过来,我认为第三方本机 DLL 然后使用同一第三方包提供的一堆其他 DLL。有一个重新分发目录,其中包含一堆 DLL 和这个本机 DLL 包使用的东西。
无论如何,所以当我在系统 PATH 上添加该重新分发目录时,在 Windows 中,我可以在单独的 C# GUI 应用程序中加载我的 C++/CLI DLL。
但是,在分发此应用程序时,我不想要求用户修改他们的 PATH。将该重新分发目录从 PATH 中取出会导致我的 C++/CLI DLL 无法加载,并出现 FileNotFound 错误。我很确定它正在找到我的 DLL,因为它在同一个目录中,但我认为它无法找到我所依赖的 DLL。我无法在运行时调整 PATH,在我的 GUI 应用程序中,因为它在调用 main 之前失败,同时加载我的 CLI DLL。
我尝试添加<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1"><probing privatePath="lib"/></assemblyBinding>
到 app.config,并将所有 DLL 放入同级 lib 目录中,但这似乎并不能解决问题。我认为它没有解决它,因为它只是告诉 C# GUI 应用程序在哪里可以找到我的 CLI DLL,但没有告诉 CLI DLL 在哪里可以找到它的 deps,对吗?
有什么想法可以解决这个问题吗?