ошибка: «WlanScan» не был объявлен в этой области

0

Я играл с 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

И это сработало!

  • 1
    Ваша main функция должна возвращать целое число.
  • 0
    @ThomasMatthews Правда, но это к следующему вопросу - не забегай вперед. :)
Показать ещё 11 комментариев
Теги:
scope
winapi

1 ответ

0

Похоже, что у кого-то еще была эта проблема:

Как скомпилировать 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")
  • 0
    Магия происходит внутри "targetver.h" . Если вы не предоставите этот файл (который Visual Studio сгенерировал для вас автоматически), он не поможет ответить на вопрос. Кроме того, в вопросе говорится об ошибке компилятора (по сравнению с ошибкой компоновщика ), так что это не имеет ничего общего с отсутствием поиска библиотеки.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню