在构建代码时,我会得到以下错误。
Linker C:\Program (x86)\MSBuild\Microsoft.Cpp\v4.0\Microsoft.CppBuild.targets(990,5):警告MSB8012: TargetPath(E:\Study\FWIF\demola\ext-libs\libcommoncpp2-1.6.0\w32\Debug\ccgnu2.dll)与
的OutputFile属性值g\CapeCommon14.dll不匹配。这可能会导致您的项目生成错误。要纠正这一点,请确保$(OutDir)、$(TargetName)和$(TargetExt)属性值与%(Link.OutputFile)中指定的值匹配。
我希望有人知道该怎么做。
发布于 2011-03-07 16:39:17
是否将项目从以前的版本升级到Visual 2010?如果是这样,这是一个众所周知的问题.
Visual 2010 C++项目升级指南http://blogs.msdn.com/b/vcblog/archive/2010/03/02/visual-studio-2010-c-project-upgrade-guide.aspx
升级期间的
警告
以下是您在转换过程中可能遇到的一些常见警告:
1)链接器输出目录
升级应用程序时可能会看到的警告之一是MSB8012:$(TargetPath)和Linker的OutputFile属性值不匹配:
中指定的值匹配。
Link.OutputFile是在属性页上的Linker ->通用->输出文件中定义的值。默认情况下,它的值是$(OutDir)$(TargetName)$(TargetExt),这与$(TargetPath)的值相同。然而,当我们从上一个版本转换一个应用程序时,解析Link.OutputFile并不是一种简单的方法来确定$(TargetName)和$(TargetExt)的确切值,因为不同的客户可能以不同的方式对它们进行了格式化。为了解决这个问题,我们决定在转换期间保留Linker.OutputFile的值。转换后,$(TargetName)将默认为$(ProjectName)。$(TargetExt)默认为应用程序类型的默认扩展:动态库的.dll、静态库的.lib和应用程序的.exe。Link.OutputFile值将被保留。如果MSB8012和$(TargetPath)不一样,则将在转换日志中发出警告TargetPath。在构建应用程序时,您将收到相同的警告。
$(OutDir), $(TargetName) and $(TargetExt) are exposed on the "General" property page, as "Output Directory", "Target Name", "Target Extension", respectively. You can manually change the values of these properties so that you no longer get the warning.
发布于 2015-04-19 10:48:58
也见这里的Stackoverflow MSB8012。在将VS2008 C++项目转换为VS2012时对我起了什么作用:右键单击解决方案资源管理器中的项目,在弹出的:配置属性、链接器、通用中选择属性。选择右边的输出文件,这将给出一个下拉,选择来自父或项目默认值的固有内容。单击apply。这给出了默认的链接器设置:$(OutDir)$(TargetName)$(TargetExt)。重新构建项目和警告不应再出现。
发布于 2011-08-29 10:30:41
对于调试DLL,我也遇到了同样的问题,我希望在basename中有一个尾随的"D“。例如,foo.dll (版本)但是fooD.dll (调试)。当您在Debug-Configuration的链接器设置中细化输出名称时,就会出现难看的MSB8012警告。
使用Visual 2010的唯一解决方案似乎是调试配置的Postbuild:
@echo off
echo Copying $(OutDir)$(TargetName)$(TargetExt) as $(TargetName)D$(TargetExt)
copy /Y $(OutDir)$(TargetName)$(TargetExt) $(OutDir)$(TargetName)D$(TargetExt)
https://stackoverflow.com/questions/4494028
复制相似问题