错误:' WlanScan'在这方面没有申明

时间:2014-08-15 19:47:04

标签: c++ windows winapi scope wlanapi

我一直在玩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

它有效!

1 个答案:

答案 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")