如何编译具有'wlanapi.h'和'windows.h'依赖关系的C ++代码

时间:2014-02-07 06:43:23

标签: c++ windows wifi header-files

我正在修改一个扫描附近无线信号的开源代码。程序代码如下:

#pragma comment(lib, "wlanapi.lib")

#include <stdio.h>
#include <windows.h>
#include <wlanapi.h>

VOID WlanNotification(WLAN_NOTIFICATION_DATA *wlanNotifData,VOID *p)
{
    if(wlanNotifData->NotificationCode == wlan_notification_acm_scan_complete)
    {
        bWait = false;
    }
    else if(wlanNotifData->NotificationCode == wlan_notification_acm_scan_fail)
    {
        printf("Scanning failed with error: %x\n", wlanNotifData->pData);
        bWait = false;

...

我想知道如何编译具有wlanapi.h和windows.h依赖的源代码?

请注意,我希望此代码在Windows(非Linux)上运行。我正在为简单的Windows用户编写一个工具,用于诊断他们的Wifi安全性。第一步是检测最近的WiFi AP及其各自的加密类型。我只是想知道如何以最简单的方式为具有'windows.h'或'wlanapi.h'依赖性的Windows平台编译此代码。

2 个答案:

答案 0 :(得分:1)

理解C和C ++是可移植语言很重要,但这并不意味着不同操作系统的API是相同的 - 这是一个很好的例子那个。

您的问题的简单解决方案可能是找到另一个已经在Linux平台上工作的源。这似乎是一个不错的资源:http://tuxmobil.org/linux_wireless_sniffer.html

如果您的目标是在Linux上运行此代码,那么您将需要找到相应的Linux接口。这里有一个问题:Wireless API for Linux in C or Java

不幸的是,这不是一个直接的&#34;插件&#34; Windows代码的兼容接口,因此您必须对代码进行一些非常重要的修改(或者构建一个模拟wlanapi.h功能的兼容性库,但我粗略估计这并不容易!)

答案 1 :(得分:0)

我找到了解决这个问题的方法。

在问题中,我询问了编写具有'wlanapi'和'windows.h'等依赖关系的代码的最简单方法。

最简单的方法是在Windows上安装“Microsoft Visual Studio”,然后在相关的IDE中编译代码。

例如,问题中的代码是C ++代码,所以我将在Visual C ++中编译它('Build')

对于任何看过这个并且正在尝试编译使用深度Windows API的代码的人,在Linux机器上,请知道这是一个坏主意。在Windows框上的“Windows SDK”或Visual Studio下编译它。