2012-12-18 96 views
0

我有一個DLL的Visual C++項目和它的安裝項目。在安裝程序中,我添加了項目的內容文件。有條件地將內容文件添加到Visual Studio C++項目

有沒有一種方法可以將文件添加爲內容文件,具體取決於您是在編譯調試還是發佈?我想包括boost_date_time-vc100-mt-gd-1_51.dll,如果我在調試版和boost_date_time-vc100-mt-1_51.dll下編譯,如果我在版本下編譯。

我額外DEPS看起來像這樣

Shell32.lib;libzmq.lib;log4cxx.lib;boost_date_time-vc100-mt-gd-1_51.lib;...

在附加庫目錄我已經添加的路徑,所有這些.lib文件還包含各自的.dll文件

我已經嘗試以下沒有成功...

  1. 添加一個自定義生成步驟運行之前生成,複製c或將dll文件保存到OutDir中,並將此自定義生成步驟的輸出設置爲dll文件。

  2. 通過手動編輯vcxproj文件有條件地包含內容文件。如果配置是發佈模式,我將設置非調試版本爲部署內容,調試版本爲false,反之亦然。這看起來是這樣的,但是

    <ItemGroup Condition="'$(Configuration)'=='Release'">

    <None Include="boost_date_time-vc100-mt-1_51.dll ">

    <DeploymentContent>true</DeploymentContent>....

    </None></ItemGroup

這些都沒有成功。無論我如何構建項目,第二個選項總是默認爲調試模式。

+0

您是否將DLL與LIB鏈接起來,還是使用'LoadLibrary'? – paddy

+0

我更新了我的問題。我想這不是真的縮短了lib名稱。即時通訊使用標題,但函數im調用需要.dll,所以沒有涉及到的圖形 – bgura

回答

1

當您添加的依賴,你可以把它添加到一個配置或全部配置:

enter image description here

[這張圖片是VS 2012年,但2010年和2008年的外觀幾乎相同]

所以,你選擇你想要修改的配置在左上角,然後將庫添加到additional dependencies。請注意,此處添加的內容是與DLL關聯的.lib文件,而不是DLL本身(編譯器將使可執行文件依賴於DLL,因爲它與.lib文件鏈接)。

+0

試過了。安裝項目並沒有拉動dll,我的項目也沒有將dll轉儲到輸出目錄。不過謝謝。 – bgura

+0

我回來了。調試將所有必需的文件添加到您的建議的安裝項目。發行版雖然沒有收錄boost dll的發佈版本,但會收拾其他所有內容。由於某種原因,它不會選擇那個。 – bgura

+0

@Thatoneguy:如果您選擇了「發佈」並添加了該庫,但它沒有采用它,我完全沒有好的想法。 –

相關問題