2017-09-05 192 views
1

我有一个应用程序“app.exe”(一个C++应用程序),它存在于版本文件夹中。 我写了一个C++/CLI DLL(clr.dll)来调用C#DLL(csharp.dll)。这两个DLL的都在文件夹中。依赖于C++/CLI DLL的.NET程序集的搜索路径

Release 
|-etc 
    |-clr.dll 
    |-csharp.dll 
|-app.exe 

APP.EXE能够加载clr.dll但clr.dll是无法找到csharp.dll。

我用fuslogvw.exe找出CLR试图在Release文件夹中搜索。

有人可以帮我找出一种方法来说CLR来搜索我的文件夹?

+1

在另一个文件夹中存储的DLL是一个非常不好的做法。从操作系统开始,无法帮助您找到clr.dll。希望你没有像修改PATH环境变量那样做一些令人讨厌的事情。对于托管程序集来说,情况大致相同,CLR首先查找GAC,然后查找与下一个EXE相同的目录。它可以确信要查看一个子目录,该目录需要在本地C++应用程序所在的同一目录中有一个appname.exe.config文件,该文件带有一个[''元素](https://docs.microsoft.com/zh-CN/zh-cn/ -us/DOTNET /框架/配置的应用程式/文件架构/运行/探测元件)。 –

+0

@HansPassant:这个应用程序已经开发完毕,二进制文件被分类到文件夹结构中。所以当这个应用程序加载时,会有一些路径添加到PATH环境变量中,以便应用程序可以找到dll。现在根据这个我必须把我的DLL放在一个单独的文件夹(不随app.exe一起)。配置文件是唯一的方法吗? –

+0

我们可以在这里发布好的建议。但是,如果用户不想听它,因为“它被分类”,并且不想使用提议的解决方案,那么他们将不得不通过参加学校的努力学习。 –

回答