Я играл с wlanapi в окнах. У меня не было проблем с компиляцией или запуском, пока я не попытался использовать функцию WlanScan. Затем я не смог скомпилировать из-за того, что «WlanScan» не был объявлен в области. Я написал очень короткую программу, иллюстрирующую это с помощью двух функций: WlanOpenHandle, который работает и WlanScan, которого нет.
#include <windows.h>
#include <wlanapi.h>
int main()
{
HANDLE hClient;
WlanOpenHandle(2, 0, 0, &hClient);
WlanScan(hClient, 0, 0, 0, 0);
}
Компиляция этого единственного файла следующим образом:
g++ main.cpp -lwlanapi
Результаты в этой ошибке:
main.cpp: In function 'int main()':
main.cpp:9:30: error: 'WlanScan' was not declared in this scope
WlanScan(hClient, 0, 0, 0, 0);
^
Что может быть причиной этого? Мне удалось использовать несколько функций из файла wlanapi. Я компилирую Windows 7 с помощью minGW.
EDIT: В соответствии с тем, что сказал u/IInspectable, я изменил команду, используемую для компиляции, на:
g++ -D_WIN32_WINNT=_WIN32_WINNT_WIN7 main.cpp -lwlanapi
И это сработало!
main
должна возвращать целое число. - person Thomas Matthews   schedule 15.08.2014main()
возвращающейint
. Где ваш код соответствует декларации? В идеале вы должны указать возвращаемое значение для операционной системы, а не полагаться на компиляторы. - person Thomas Matthews   schedule 16.08.2014#pragma comment(lib, "wlanapi.lib")
к вашему текущему коду и посмотреть, что произойдет. - person Forest Kunecke   schedule 16.08.2014return 0
) - person quantdev   schedule 16.08.2014_WIN32_WINNT
установлен на_WIN32_WINNT_WINXP
(или выше, например,_WIN32_WINNT_VISTA
,_WIN32_WINNT_WIN7
). Символ должен быть определен до включения файла заголовка<wlanapi.h>
. Рекомендуется передавать его в командной строке компилятора. - person IInspectable   schedule 16.08.2014