簡體   English   中英

鏈接器輸出文件屬性文件與目標路徑不匹配?

[英]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)$(TargetName)$(TargetExt)”

這阻止了警告的出現並成功生成了輸出。

原始配置設置如下:

屬性 -> 鏈接器 -> 常規: $(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.

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