Я играл с 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: В соответствии с тем, что я /IInpectable сказал, я изменил команду, используемую для компиляции:
g++ -D_WIN32_WINNT=_WIN32_WINNT_WIN7 main.cpp -lwlanapi
И это сработало!
Похоже, что у кого-то еще была эта проблема:
Как скомпилировать C++ код с зависимостями wlanapi.h и windows.h
Рекомендуемое решение - просто поместить его в Visual Studio и скомпилировать его с помощью этого; MinGW, вероятно, не может найти библиотеку.
Используя VS2010, я создал консольное приложение V C++ (с предварительно скомпилированным заголовком), и мне удалось собрать следующее сообщение без каких-либо ошибок:
// wlanapi_Test.cpp : Defines the entry point for the console application.
//
#include "stdafx.h"
int _tmain(int argc, _TCHAR* argv[])
{
HANDLE hClient;
WlanOpenHandle(2, 0, 0, &hClient);
WlanScan(hClient, 0, 0, 0, 0);
}
И вот мой прекомпилированный заголовок:
// stdafx.h : include file for standard system include files,
// or project specific include files that are used frequently, but
// are changed infrequently
//
#pragma once
#include "targetver.h"
#include <stdio.h>
#include <tchar.h>
// TODO: reference additional headers your program requires here
#include <windows.h>
#include <wlanapi.h>
#pragma comment(lib, "wlanapi.lib")
"targetver.h"
. Если вы не предоставите этот файл (который Visual Studio сгенерировал для вас автоматически), он не поможет ответить на вопрос. Кроме того, в вопросе говорится об ошибке компилятора (по сравнению с ошибкой компоновщика ), так что это не имеет ничего общего с отсутствием поиска библиотеки.
main
функция должна возвращать целое число.