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像个大男孩一样试图自己解决问题。然后失败。你知道为什么吗?