2014-02-07 5 views
0

Я изменяю открытый код, который сканирует беспроводные сигналы поблизости. Программный код выглядит следующим образом:Как скомпилировать код C++ с зависимостями 'wlanapi.h' и 'windows.h'

#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 (Not Linux). Я кодирую инструмент для простых пользователей Windows, которые будут диагностировать их безопасность Wi-Fi для них. Первым шагом является определение ближайших точек доступа WiFi и их соответствующих типов шифрования. Я просто хочу знать, как я могу скомпилировать этот код для платформы Windows, который имеет зависимость «windows.h» или «wlanapi.h», самым простым способом.

+0

у вас есть ошибка? Или вы спрашиваете, как скомпилировать его? – Gasim

+1

Вы компилируете его с помощью компилятора, который может быть нацелен на Windows. Visual Studio (версия Express бесплатна) или MinGW или такой. – Adam

+0

Я парень Linux и не имею большого опыта работы с Windows. Я попытался скомпилировать его с g ++ в Linux и, конечно, я получил сообщение об ошибке «windows.h» не найден. Я устанавливаю «Mingw32» в своем Linux-боксе. Думаю, это решило бы зависимость «windows.h», но как насчет «wlanapi.h»? – learnerX

ответ

0

Я нашел решение этой проблемы.

В вопросе я спросил про самый простой способ скомпилировать код с такими зависимостями, как «wlanapi» и «windows.h».

Самый простой способ - установить «Microsoft Visual Studio» в окне Windows, а затем скомпилировать код в соответствующей среде IDE.

Для примера кода в вопросе является C++ код, так что я бы скомпилировать его («Build») в Visual C++

Для тех, кто смотрит на это и пытается скомпилировать код, который использует глубокие окна API, в linux box, пожалуйста, знайте, что это плохая плохая идея. Скомпилируйте его под «Windows SDK» или Visual Studio в окне Windows.

1

Важно понимать, что C и C++ являются переносными языками, но это не значит, что API одинаковы для разных ОС - и это хороший пример этого.

Простым решением проблемы является поиск другого источника, который уже работает на платформе Linux. Это, по-видимому, достойный ресурс: http://tuxmobil.org/linux_wireless_sniffer.html

Если вы хотите, чтобы этот код работал в Linux, вам нужно будет найти соответствующие интерфейсы Linux. Здесь есть вопрос: Wireless API for Linux in C or Java

К сожалению, это не прямой «подключаемый» интерфейс для кода Windows, поэтому вам придется внести некоторые существенные изменения в код (или создать библиотеку совместимости что эмулирует функциональность wlanapi.h, но моя приблизительная оценка заключается в том, что это не так просто!)

+0

Спасибо за ваше предложение. Однако учтите, что я хочу скомпилировать этот код для платформы Windows и НЕ для Linux. Я «отредактировал» мой первоначальный вопрос. Я просто хочу знать, как я могу скомпилировать этот код для платформы Windows, который имеет зависимость «windows.h» или «wlanapi.h», самым простым способом. – learnerX

+0

Ну, тогда вам нужен кросс-компилятор Windows, который работает на Linux. Например: http://www.mingw.org/wiki/LinuxCrossMinGW Вам также может понадобиться завладеть заголовками и библиотеками для используемого вами API. –

+0

"i586-mingw32msvc-g ++ -s -o wlansca.exe wlansca.cpp wlanscap.cpp: 12: 21: error: wlanapi.h: Нет такого файла или каталога". Теперь мне нужно получить этот «wlanapi.h», я думаю, и добавить его для mingw32, я думаю? – learnerX

Смежные вопросы