如何静态链接库以使用cl.exe使用SHGetSpecialFolderPath

时间:2011-11-15 17:22:10

标签: c++ winapi

我正在使用WINAPI的SHGetSpecialFolderPath函数,还使用Windows VisualExpressC ++编译器(cl.exe)来编译它。但是在链接阶段我得到了这个错误:

error LNK2019: unresolved external symbol __imp___SHGetSpecialFolderPathA@16 referenced in function _main

我想我需要链接Shell32.lib,这是正确的,我怎么能这样做才能让我的程序在另一个系统上运行,甚至可能是XP而不是7重新编译它?

2 个答案:

答案 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