![](/img/trans.png)
[英]visual c++: #include files from other projects in the same solution
[英]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.