2017-09-05 138 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

我們可以在這裏發佈好的建議。但是,如果用戶不想聽它,因爲「它被分類」,並且不想使用提議的解決方案,那麼他們將不得不通過參加學校的努力學習。 –

回答