Как статически связать библиотеку для использования SHGetSpecialFolderPath с помощью cl.exe - PullRequest
2 голосов
/ 15 ноября 2011

Я использую SHGetSpecialFolderPath функцию WINAPI, а также компилятор Windows VisualExpressC ++ (cl.exe) для его компиляции. Но когда на этапе связывания я получаю эту ошибку:

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

Я предполагаю, что мне нужно связать Shell32.lib, это правильно, и как бы я сделал это так, чтобы я мог фактически запустить свою программу на другой системе, возможно, даже на XP вместо 7, без перекомпиляции

Ответы [ 2 ]

3 голосов
/ 15 ноября 2011

Если вы компилируете из командной строки, просто добавьте shell32.lib к команде, что-то вроде этого:

cl file1.cpp file2.cpp shell32.lib

Вы просто используете функцию, предоставляемую Windows. Поскольку эта конкретная функция восходит почти к незапамятным временам (Windows 95, если я правильно помню), вам не нужно было делать что-то особенное, чтобы использовать ее для чего-либо достаточно актуального.

2 голосов
/ 15 ноября 2011

Да, вам нужно будет связаться с Shell32.lib.В этом случае ваша программа будет совместима как с Windows XP, так и с Windows 7 (если вы не используете функции, доступные только в Windows 7 или Windows Vista).

Вам придется изменитькомандная строка cl.exe в:

cl program.cpp shell32.lib
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...