簡體   English   中英

將DLL與C ++項目中的其他輸出文件分開

[英]Separate dll from other output files in c++ projects

我在解決方案中有幾個dll項目(彼此依賴)

Project1 -> Properties -> Linker -> Input -> Additional Dependencies -> Project2.lib
Project1 -> Properties -> Linker -> General -> Additional Library Directories -> $(OutDir)

一切正常。

項目是Win7Debug Win32,Win7Debug x64 .....和僅具有Debug和Release配置的Win32項目。

我想將Win32的所有dll放在一個文件夾中,而x64的dll放在另一個文件夾中。 所以我為Win32項目添加了x64配置,並進行了更改

Project1 -> Properties -> Linker -> General -> Output File -> $(SolutionDir)/i386/$(TargetName)/$(TargetExt)

(對於Win32-對於x64的類似更改)

一切似乎都很好-我只在i386文件夾中收到dll ...直到我不得不重建並得到

Warning 23  warning MSB8012: 
TargetPath(C:\Path\Win7Debug\Project1.dll) does not match the Linker's OutputFile 
property value (C:\Path\i386\Project1.dll). This may cause your project to build 
incorrectly. To correct this, please make sure that $(OutDir), $(TargetName) and 
$(TargetExt) property values match the value specified in %(Link.OutputFile).   

這似乎很嚴重...而且我不想因缺少依賴項而遇到問題(盡管一切似乎都可以正常工作,而不僅僅是在我的機器上)

我變了

 Project1 -> Properties -> Configuration Properties -> General -> OutputDirectory -> $(SolutionDir)/i386

(以匹配鏈接器的輸出),但是現在我當然將lib和exp文件與dll放在同一文件夾中。

除了使用后期生成腳本之外,還有沒有其他方法可以分隔輸出文件?

我應該只保留設置的方式而忽略上面的警告嗎?

注意 :我不是要分隔平台/配置輸出文件...這是使用默認輸出目錄自動完成的。

對於每個平台,我需要的是將DLL文件僅放置在一個文件夾中,且與其他任何文件都不要。 重定向鏈接器輸出(並將項目輸出保留為標准輸出)可以達到目的-我只是不確定它是否正確。 從邏輯上講,我不應該有任何構建問題,因為我為鏈接器提供了所需的所有信息...

標准方法是保留所有這些屬性不變(從父級繼承)。 在這種情況下,鏈接器將在$(Output)目錄中創建DLL和LIB,默認情況下為$(SolutionDir)$(Configuration) 您只需為x64配置指定名稱,所有輸出文件將自動分離。

鏈接導入庫的標准方法(也是最簡便的方法)是在“ Common Properties / References頁面中為相應的項目添加引用。 沒有其他要求。

如果由於某種原因是不可能的,則將$(SolutionDir)$(Configuration)Configuration Properties / VC++ Directories / Library Directories並添加要鏈接到Linker / Additional Dependencies項的庫。 如果您的解決方案中有很多項目,則可以為該解決方案創建屬性表,並僅指定一次Library Directories

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM