我正在修改一个扫描附近无线信号的开源代码。程序代码如下:
#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平台编译此代码。
答案 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下编译它。