Visual c++ 如何在Visual C+;中修复静态库项目中的警告MSB8012+;2010?

Visual c++ 如何在Visual C+;中修复静态库项目中的警告MSB8012+;2010?,visual-c++,static-libraries,visual-c++-2010,Visual C++,Static Libraries,Visual C++ 2010,我正在尝试将一个静态库从VC++2008转换为VC++2010,我得到了 这些警告与TargetPath和TargetName有关。我已经查看了我的配置 我不知道怎样才能让这些消失。对于我通常构建一次但很少重建的静态库来说,这是严重的还是真的只是一个不可忽视的警告 我认为这与项目命名为ITK32有关,但是该库的调试版本命名为ITK32 DLIB,而在Visual C++ 6时代配置的旧方式导致了在VC2010中停留的某种奇怪设置。 项目,不久前从VC6转换到2008,现在我正在转换到2010:

我正在尝试将一个静态库从VC++2008转换为VC++2010,我得到了 这些警告与TargetPath和TargetName有关。我已经查看了我的配置 我不知道怎样才能让这些消失。对于我通常构建一次但很少重建的静态库来说,这是严重的还是真的只是一个不可忽视的警告

我认为这与项目命名为ITK32有关,但是该库的调试版本命名为ITK32 DLIB,而在Visual C++ 6时代配置的旧方式导致了在VC2010中停留的某种奇怪设置。 项目,不久前从VC6转换到2008,现在我正在转换到2010:

1>------ Build started: Project: Itk32, Configuration: Debug Win32 ------
1>...\Microsoft.CppBuild.targets(1151,5): warning MSB8012: TargetPath(C:\...\Libraries\Itk\.\Debug\Itk32d.lib.lib) does not match the Library's OutputFile property value (C:\...\Libraries\Itk\Debug\Itk32d.lib). 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 %(Lib.OutputFile).
1>...\Microsoft.CppBuild.targets(1153,5): warning MSB8012: TargetName(Itk32d.lib) does not match the Library's OutputFile property value (Itk32d). 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 %(Lib.OutputFile).
========== Build: 1 succeeded, 0 failed, 0 up-to-date, 0 skipped ==========

在VS2010中对构建系统进行了重大的检修,现在它使用MSBuild而不是自定义的VCBuild系统。与VS支持的其他语言使用的构建系统相同,它们在使不可见的旧项目正常构建方面做得相当好。但在导入旧项目时,有几个地方可能会遇到麻烦。这就是这个警告所说的

使用链接器的General+Output File设置来命名输出文件就是这样一个问题。实际上并不确定会出什么问题,它可能与依赖性检查有关。它的默认设置为$(OutDir)$(TargetName)$(targetText)。因此,重命名输出文件的最佳方法是更改$(TargetName)宏值


在常规主页面上作为“目标名称”设置提供。它在早期的VS版本中不存在。所以把这个改成“itk32d”。或者更好,$(ProjectName)d。然后重置链接器设置。

我遇到了这个问题,但在这里找不到有效的答案,因此,最终我发现,通过在每个构建配置中将中间目录从“\Debug”修复为“.\Debug”,并将“\Release”修复为“.\Release”,解决了这个问题


很抱歉,这只值得发表评论,但我没有足够的分数向其他人的帖子添加评论。

也遇到过类似的外观问题,但我能够解决使用以前版本的约定将参数的$(ConfigurationName)更改为$(Configuration)的问题。。我不会想象这样的事情,但当我检查的情况下,命名约定被改变,重新引用主要是工作和那里,但很少的事情,它没有完全解释,这是原因….. /P>所以看起来像以前的VisualC++版本允许一些相当奇怪的结构复制的结果。.exe和.lib结果(输出文件)到不同的目录,如果我重置输出设置,然后执行生成后步骤,执行文件“移动到新位置”部分,它会让MSBUILD系统满意吗?我完全不知道您是如何从我的回答中得出这个结论的:)我重点关注导致警告的特定设置,以及如何调整项目设置以避免警告。我花了一个小时玩你提到的设置,现在我的大脑已经适应了潜在的现实。换句话说,谢谢你,伙计。在我的例子中,上面的评论更多的是关于我自己项目的结构,在导入VS2010时,它似乎确实没有生成匹配的目标和输出文件名属性。(不同的目录级别,其中一个比另一个有更多的“..\..”类型相对向上路径行走)更改链接器设置,对我来说也很有效,这听起来与您的项目布局非常相关。这将根据项目的具体情况进行调整,不过,它会告诉你相关的设置。你在上面的链接中找到的最佳答案是重置链接器设置,这也是下面被接受的答案所说的。