[英]Linker outfile property file does not match targetpath?
我正在嘗試為SierraChart自定義研究編譯 C++ 類型的 .DLL。 (這是一個金融交易應用程序。)這是我收到的警告,我需要修復它,以便它全部指向鏈接器輸出值:
warning MSB8012:
TargetPath(C:\SierraChart\VCProject\Release\SCStudies.dll) does not match the Linker's
OutputFile property value (c:\sierrachart\data\SCStudies.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).
C:\Program Files (x86)\MSBuild\Microsoft.Cpp\v4.0\Microsoft.CppBuild.targets
知道出了什么問題嗎?
我相信在將 C++ 項目升級到 VS2010 時會特別出現此警告。 Visual Studio 2010 C++ 項目升級指南描述了升級過程中遇到的一些注意事項。 如果您對更改項目設置感到不舒服,那么保留舊版本的 Visual Studio 可能對您有用。
要更改%(Link.OutputFile)
,請打開項目屬性。 導航到配置屬性 -> 鏈接器 -> 常規。 您可以將輸出文件設置為$(OutDir)\\SCStudies.dll
,這應該可以解決您的問題。 您可能需要對將要構建的每個配置/風格(Debug/x86、Release/x86、Debug/Itanium 等)重復更改。
原始配置設置如下:
屬性 -> 鏈接器 -> 常規:
$(OutDir)\\"<'name fileA>".exe
程序嘗試運行“ <'name_project>
”.exe,結果錯誤鏈接。
您需要將配置設置為:
屬性 -> 鏈接器 -> 常規:
$(OutDir)\\"<'project name>".exe
其他人沒有提到的另一個修復是默認情況下 TargetExt 是.exe
並且對於我的調試版本,我將其更改為_d.exe
,而您應該在 TargetName 路徑中執行此操作。
看起來對程序來說並不重要:
在 General->Output Directory 中指定的目錄和在 Linker->Output File 的路徑中指定的目錄必須匹配。
如果要更改默認值,請按以下順序執行操作:首先在 General->Output Directory 中配置 OutDir。 例如
$(SolutionDir)$(Platform)\$(Configuration)\MyProgram\
確保輸出文件一致。 例如這會起作用
$(OutDir)\$(TargetName)$(TargetExt)
Gerardo Hernandez 的評論對我很有幫助。
在 General->Output Directory 中指定的目錄和在 Linker->Output File 的路徑中指定的目錄必須匹配。
就我而言,我從 Visual Studio 6 導入了一個大型項目
C:\\Project\\myproject\\OneOfMyDlls\\.\\Debug\\OneOfMyDlls.dll
不等於
C:\\Project\\myproject\\Debug\\OneOfMyDlls.dll
但是
C:\\Project\\myproject\\OneOfMyDlls\\..\\Debug\\OneOfMyDlls.dll
本來是,在路徑減少之后。
問題是 Visual Studio 2017 導入已將輸出目錄從..\\Debug
更改為.\\Debug
假設非常規父目錄的使用是錯誤的。 在一個擁有 13 個我們自己的 DLL 的大型項目中(更不用說第二方和第三方 DLL),將所有 DLL 收集在一個地方是有意義的,並且..\\Debug
是正確的。
因此,雖然其他人可能不得不更改Linker->Output File
,但在我的情況下是General->Output Directory
需要更改,因為它已被從 Visual Studio 6 導入損壞。
像..\\Debug
這樣的東西在導入后變成了像.\\Debug
這樣的東西。 (真正的項目特定名稱已被刪除。)
如果像我一樣,在 20 年后返回 Visual Studio,您可能不知道項目屬性在哪里。 在 VS 2012 中:屏幕頂部“FILE EDIT VIEW PROJECT BUILD...”:選擇 PROJECT。 屬性是菜單中的最后一項。 事實上,對我來說,目標名稱也不匹配。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.