我最近将我的项目从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 ==========

最佳答案

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

无论如何,首先要确保您确实有shlwapi.lib:确认磁盘上有该目录,并且其中有shlwapi.lib,只是为了检查VS安装是否正常。

然后创建一个空白的新C ++项目文件,并向其中添加当前源文件,添加所需的包含目录/库或预处理程序选项。但是就这样。然后建立。那最终应该会解决,然后您可以将新项目与旧项目进行比较,以了解出什么问题了。或者,只需使用新项目。

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

关于c++ - Visual Studio 2012找不到shlwapi.lib,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/25013427/

10-10 23:27