0

私はWindowsでwlanapiをいじっています。関数WlanScanを使用してみるまで、コンパイルや実行に問題はありませんでした。その後、「WlanScan」がスコープで宣言されていないため、コンパイルできませんでした。これを示す非常に短いプログラムを 2 つの関数 (機能する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

そしてそれは働いた!

4

1 に答える 1

0

他の誰かが以前にこの問題を抱えていたようです:

「wlanapi.h」および「windows.h」依存関係を持つ C++ コードをコンパイルする方法

推奨される解決策は、それを 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")
于 2014-08-15T19:51:17.073 に答える