Visual Studio 2012找不到shlwapi.lib

时间:2014-07-29 10:43:32

标签: c++ visual-studio-2012

我最近将我的项目从VS2010迁移到VS2012(2010年将在编译所需的框架时崩溃,2012年会做得很好),但现在它找不到shlwapi.lib

我添加了

$(WindowsSDK_IncludePath);
$(WindowsSDK_LibraryPath_x86); 

到目录设置,是否还需要添加其他内容?

编辑:完成构建的输出。

2>------ Build started: Project: MachineLearning, Configuration: Debug Win32 ------
2>  MachLearning.cpp
1>LINK : warning LNK4075: ignoring '/INCREMENTAL' due to '/LTCG' specification
1>LINK : fatal error LNK1181: cannot open input file 'Shlwapi.lib'
2>d:\development\glukosescanner\machinelearning\source\machlearning.cpp(65): warning C4244: 'initializing' : conversion from 'double' to 'int', possible loss of data
2>d:\development\glukosescanner\machinelearning\source\machlearning.cpp(79): warning C4244: 'initializing' : conversion from 'double' to 'int', possible loss of data
2>  libfftw-3.3-x86.lib(execute.obj) : MSIL .netmodule or module compiled with /GL found; restarting link with /LTCG; add /LTCG to the link command line to improve linker performance
2>LINK : warning LNK4075: ignoring '/INCREMENTAL' due to '/LTCG' specification
2>MachLearning.obj : warning LNK4075: ignoring '/EDITANDCONTINUE' due to '/OPT:LBR' specification
2>LINK : warning LNK4098: defaultlib 'MSVCRT' conflicts with use of other libs; use /NODEFAULTLIB:library
2>  Generating code
2>  Finished generating code
2>  MachineLearning.vcxproj -> D:\Development\GlukoseScanner\GlucoseControl\Debug\MachineLearning.exe
========== Build: 1 succeeded, 1 failed, 6 up-to-date, 0 skipped ==========

1 个答案:

答案 0 :(得分:1)

项目升级可能出错了,但无论如何你的项目设置似乎都不正确。默认情况下,WindowsSDK_LibraryPath_x86等应该已存在,并且defaultlib 'MSVCRT' conflicts with use of other libs之类的消息表明您正在跨项目混合使用不同的编译器/链接器选项。

无论如何首先确保你有shlwapi.lib:确认你的磁盘上有该目录,里面有shlwapi.lib,只是检查你的VS安装是否正常。

然后创建一个空白的新C ++项目文件并将当前源文件添加到其中,添加所需的include目录/库或预处理器选项。但就是这样。然后建立。这应该最终解决,然后你可以将你的新项目与旧项目进行比较,看看有什么问题。或者,只需使用新项目..

同时确保使用相同的设置构建所有项目(如fftw等,也似乎又有不同设置的casue)。最简单的方法是使用所有项目共享的所有编译器/链接器选项的单个属性表。我强烈建议您查看它是如何工作的(这很简单)并始终如一地使用它。