我一直在玩Windows中的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的一些功能了。我在使用minGW进行Windows 7编译。
修改 按照u / IInspectable的说法,我将用于编译的命令改为:
g++ -D_WIN32_WINNT=_WIN32_WINNT_WIN7 main.cpp -lwlanapi
它有效!
答案 0 :(得分:0)
看起来其他人之前遇到过这个问题:
How To Compile C++ Code that has a 'wlanapi.h' and 'windows.h' dependency
推荐的解决方案是将其放入Visual Studio并使用它进行编译; MinGW可能无法找到该库。
使用VS2010我创建了一个VC ++控制台应用程序(带有预编译的头文件),我能够在没有任何错误的情况下进行以下编译:
// 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")