【问题标题】:How To Compile C++ Code that has a 'wlanapi.h' and 'windows.h' dependency如何编译具有“wlanapi.h”和“windows.h”依赖项的 C++ 代码
【发布时间】:2014-02-08 21:55:58
【问题描述】:

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

#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 平台编译此代码。

【问题讨论】:

  • 您是否收到错误消息?还是你问怎么编译?
  • 您使用可以针对 Windows 的编译器进行编译。 Visual Studio(Express 版本是免费的)或 MinGW 等。
  • 我是一名 Linux 专家,对 Windows 没有太多经验。我尝试在 Linux 中用 g++ 编译它,当然我得到一个错误,说“windows.h”没有找到。我正在我的 Linux Box 中安装“Mingw32”。我猜它会解决'windows.h'依赖,但是'wlanapi.h'呢??

标签: c++ windows wifi header-files


【解决方案1】:

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

解决您的问题的简单方法可能是找到另一个已经在 Linux 平台上运行的资源。这似乎是一个不错的资源:@​​987654321@

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

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

【讨论】:

  • 感谢您的建议。但是请注意,我想为 Windows 平台而不是 linux 编译此代码。我已经相应地“编辑”了我原来的问题。我只想知道如何以最简单的方式为具有“windows.h”或“wlanapi.h”依赖项的 Windows 平台编译此代码。
  • 好吧,那么你需要一个在 Linux 上运行的 windows 交叉编译器。例如:mingw.org/wiki/LinuxCrossMinGW 您可能还需要获取您正在使用的 API 的标头和库。
  • “i586-mingw32msvc-g++ -s -o wlansca.exe wlansca.cpp wlanscap.cpp:12:21:错误:wlanapi.h:没有这样的文件或目录”。现在我需要得到这个'wlanapi.h',我猜想并将它添加到mingw32?
  • 是的,就像我说的,您可能需要安装头文件和库(这可能比看起来更难,因为其中一些包含在“安装程序包”中,这意味着您需要运行用于提取内容的 Windows 代码 - Wine [Windows 模拟器] 可能是这里的救星)
  • 好的,由于我很着急,不想花很多时间诊断错误,我决定在 Windows 机器上下载并安装“Windows SDK”(就像一个好孩子!),然后从那里编译我的代码。这样看起来容易多了
【解决方案2】:

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

在问题中,我询问了编译具有“wlanapi”和“windows.h”等依赖项的代码的最简单方法。

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

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

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

【讨论】:

    猜你喜欢
    • 2020-02-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-06-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-08-01
    相关资源
    最近更新 更多