2017-05-05 18 views
0

這個問題已經在SO上多次提出並回答過,但我無法得到建議的解決方案以適應我的情況。我正在使用一個依賴於許多(〜50)DLL的庫。這是Windows 7 x64,Visual Studio 2015,C++。目標:(1)在開發過程中,讓調試器訪問所需的DLL。 (2)對於部署,可以在Windows安裝程序中提供所需的DLL,或者將壓縮文件複製到可執行文件夾或其他文件夾中。如果DLL不在可執行文件夾中,則需要在執行過程中告訴pgm。對於(1),我試圖修改配置屬性/調試/環境變量,將路徑添加到DLL C:\ ProgramFiles \ Octave \ Octave-4.2.1 \ bin中。由於某種原因,這不起作用。如何在調試和重新分配過程中包含DLL?

在我更改任何內容之前,配置中顯示的環境變量爲$(LocalDebuggerEnvironment),評估值爲PATH=;%PATH%,Inheirited值爲PATH=$(VCRedistPaths)%PATH%

加入我進場後,我不得不

環境:

PATH=C:\ProgramFiles\Octave\Octave-4.2.1\bin%PATH%$(LocalDebuggerEnvironment) 

我的條目:

PATH=C:\ProgramFiles\Octave\Octave-4.2.1\bin%PATH% 

評估值:

PATH=C:\ProgramFiles\Octave\Octave-4.2.1\bin%PATH% 
PATH=;%PATH% 

繼承值:

PATH=$(VCRedistPaths)%PATH% 

但啓動調試器時找不到DLL。

更改VS調試器路徑環境的正確方法是什麼?

什麼是建議的方式來處理第(2)部分?

回答

0

您可能在路徑條目和%PATH%環境變量之間缺少分號。嘗試:

PATH=C:\ProgramFiles\Octave\Octave-4.2.1\bin;%PATH% 

另一種選擇是設置%PATH%在系統環境包括含有DLL文件的目錄。您必須重新啓動Visual Studio才能獲取環境更改。如果在調試器中正確設置路徑,則此選項可能不是必需的。

您的DLL可以與您的程序在同一個目錄中,並且在大多數情況下它們將被程序找到。 (有例外......)您可以閱讀here瞭解Windows在運行不同類型的程序時如何搜索DLL。

查看程序在哪裏搜索DLL的簡單方法是使用Process Monitor來實時顯示程序搜索DLL的路徑。

+0

我將環境配置中的條目更改爲PATH = C:\ ProgramFiles \ Octave \ Octave-4.2.1 \ bin;%PATH%;如所建議的那樣,並沒有區別。但是,我也沒有選中底部的框「繼承父項目或項目默認值」,現在我開始調試時沒有更多的「DLL丟失」消息。我不知道發生了什麼事。也許它與「評估值」中出現的PATH =;%PATH%有關。 – Woody20

+0

嘗試進程監視器。它將幫助您排查問題。 – Nathan

1

一些PATH環境變量級聯看起來有問題。

嘗試插入;(分號)分隔符,只要有邏輯字符串和變量的連接。

例如:

PATH=C:\ProgramFiles\Octave\Octave-4.2.1\bin%PATH%$(LocalDebuggerEnvironment)

將成爲:

PATH=C:\ProgramFiles\Octave\Octave-4.2.1\bin;%PATH%;$(LocalDebuggerEnvironment)

PATH=C:\ProgramFiles\Octave\Octave-4.2.1\bin%PATH%

將變成:

PATH=C:\ProgramFiles\Octave\Octave-4.2.1\bin;%PATH%

等等。

+0

現在我想設置一個新的env變量'TESSDATA_PREFIX'並添加一個新的'PATH'變量。作爲你的回答,我把它填寫爲[this](https://i.stack.imgur.com/OJOI0.png)。但我得到一個錯誤信息,顯示'TESSDATA_PREFIX'設置失敗。 – yode

+0

@yode該語法是(我相信)只是將'TESSDATA_PREFIX'添加到'PATH'字符串中(';'沒有做你想要它)。相反,單擊該環境單元格中的下拉菜單並單擊「編輯...」。 VS會打開一個對話框,您可以在其中添加變量 - 每行一個。當您返回到調試選項卡時,它們將看起來像一個長字符串。 –

+0

謝謝,這是有效的。 – yode