我正在使用WINAPI的SHGetSpecialFolderPath
函数,还使用Windows VisualExpressC ++编译器(cl.exe)来编译它。但是在链接阶段我得到了这个错误:
error LNK2019: unresolved external symbol __imp___SHGetSpecialFolderPathA@16 referenced in function _main
我想我需要链接Shell32.lib
,这是正确的,我怎么能这样做才能让我的程序在另一个系统上运行,甚至可能是XP而不是7重新编译它?
答案 0 :(得分:3)
如果您是从命令行进行编译,只需在命令中添加shell32.lib
,如下所示:
cl file1.cpp file2.cpp shell32.lib
您只是使用Windows提供的功能。由于这个特定的功能几乎可以追溯到时间的早期(Windows 95,如果我没记错的话),你不应该做任何特别的事情来将它用于任何合理的电流。
答案 1 :(得分:2)
是的,您必须链接到Shell32.lib。如果您这样做,您的程序将兼容Windows XP和Windows 7(只要您不使用仅在Windows 7或Windows Vista上可用的功能)。
您必须将cl.exe的命令行更改为:
cl program.cpp shell32.lib