我正在尝试为名为sierra chart的应用程序编译.DLL。
以下是我需要修复的警告,所有内容都指向链接器输出值:
警告MSB8012: TARGETPATH(C:\ SierraChart \ VCProject \发布\ SCStudies.dll) 与链接器的OutputFile不匹配 适当的价值 (C:\ sierrachart \数据\ SCStudies.dll)。 这可能会导致您的项目构建 不正确。为了纠正这个问题,请 确保$(OutDir), $(TargetName)和$(TargetExt) 属性值与值匹配 指定的 %(Link.OutputFile)。 C:\ Program Files (86)\的MSBuild \ Microsoft.Cpp \ V4.0 \ Microsoft.CppBuild.targets
有什么想法吗?
答案 0 :(得分:9)
我相信在将C ++项目升级到VS2010时会出现此警告。 Visual Studio 2010 C++ Project Upgrade Guide描述了升级过程中遇到的一些警告。如果您对更改项目设置感到不舒服,那么保留旧版Visual Studio可能对您有用。
要更改%(Link.OutputFile)
,请打开项目属性。导航到配置属性 - >链接器 - >一般。您可以将输出文件设置为$(OutDir)\SCStudies.dll
,这应该可以解决您的问题。您可能需要为要构建的每个Configuration / Flavor重复更改(Debug / x86,Release / x86,Debug / Itanium等...)。
答案 1 :(得分:6)
基于此answer。
我更改了以下属性:
链接器 - >一般 - >输出文件到 “$(OUTDIR)$(的TargetName)$(TargetExt)”
这样可以防止出现警告并成功生成输出。
答案 2 :(得分:1)
原始配置设置如下:
属性 - >链接器 - >一般:
$(OutDir)\"<'name fileA>".exe
程序尝试运行“<'name_project>
”。exe并结果错误已链接。
您需要将配置设置为:
属性 - &gt;链接器 - &gt;一般:
$(OutDir)\"<'project name>".exe
答案 3 :(得分:1)
其他人没有提到的另一个修复是默认情况下TargetExt为.exe
,对于我的调试版本,我将其更改为_d.exe
,而您应该在TargetName中执行此操作路径。
答案 4 :(得分:0)
看起来这对该计划来说并不重要:
Odd Visual Studio error when following the custom study video
答案 5 :(得分:0)
General-&gt; Output Directory中指定的目录和Linker-&gt; Output File路径中指定的目录必须匹配。
如果您想更改默认值,请按以下顺序执行操作: 首先在General-&gt; Output Directory中配置OutDir。 E.g。
$(SolutionDir)$(Platform)\$(Configuration)\MyProgram\
确保输出文件一致。例如。这会起作用
$(OutDir)\$(TargetName)$(TargetExt)
答案 6 :(得分:0)
Gerardo Hernandez的评论帮助了我。
在General-&gt;输出目录中指定的目录和Linker-&gt;输出文件的路径中指定的目录必须匹配。
在我的情况下,我从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
。 (已删除真正的项目特定名称。)