Visual studio 2010 静态库的VS2010链接在不同的解决方案中表现不同

Visual studio 2010 静态库的VS2010链接在不同的解决方案中表现不同,visual-studio-2010,visual-c++,msbuild,linker,Visual Studio 2010,Visual C++,Msbuild,Linker,假设我有一个解决方案S1,有两个项目pdep和pmaster,分别创建一个静态和动态库。我有以下配置: 发布win32:生成pdep.lib 调试win32:生成pdepd.lib 发布x64:productspdepx64.lib 调试x64:生成pdepx64d.lib pmaster链接配置通过配置属性->链接器->输入->其他依赖项来完成 代码中没有pragma注释(lib)。没有通用属性引用。 我观察到: 在同时使用pdep和pmaster的s1中,链接器的命令行是可以使用的。i

假设我有一个解决方案
S1
,有两个项目
pdep
pmaster
,分别创建一个静态和动态库。我有以下配置:

  • 发布win32:生成
    pdep.lib
  • 调试win32:生成
    pdepd.lib
  • 发布x64:products
    pdepx64.lib
  • 调试x64:生成
    pdepx64d.lib
pmaster
链接配置通过
配置属性->链接器->输入->其他依赖项来完成
代码中没有pragma注释(lib)。没有通用属性引用。

我观察到:

  • 在同时使用pdep和pmaster的s1中,链接器的命令行是可以使用的。ie
    /LIBPATH:“c:\pdep\lib\x64\Release”“pdepx64.lib”

  • 在通过单击项目pmaster新创建的解决方案S2中,无论配置如何,我都会有一个附加行,带有特定版本pdep的绝对路径。ie
    /LIBPATH:“c:\pdep\lib\x64\Release”“pdepx64.lib”“c:\pdep\lib\pdepd.lib”


S2中的链接器如何派生附加选项
“c:\pdep\lib\pdepd.lib”

如何摆脱它?

多种可能性:

  • 公共属性->引用
  • 链接器或库管理员部分中的链接库依赖项。这假定已设置项目依赖项
  • #pragma comment(lib…
    正在发挥作用

您可以使用带有预处理标志的msbuild展平项目文件。然后将其加载到纯文本或xml编辑器中。查看linker命令,查看$(属性)包含哪些选项,然后查看设置的位置


使用msbuild,您还可以使用更详细的日志记录,它将报告要评估的条件等。

@leppie不要删除vs2010标记您没有为vs2010开发任何东西。它就像用Vim标记每个Ruby问题…@leppie它可能与特定的IDE有关,为什么要删除标记?依我看,标记是有效的。请不要删除它。@leppie,这是否意味着这里所有
C++
的人都在使用
C++
编译器?好的。为什么不在文本编辑器中打开.SLN或.VCXProj文件并进行查找?可能是埋在下面的东西,VS没有给你看。一个这样的例子是
/prefast
选项。我附加了debugview,在后面的例子中,MSBuild像个大男孩一样试图自己解决问题。然后失败。你知道为什么吗?