Ошибка компоновщика при использовании NetMon API в Visual Studio 2013

У меня проблемы с компиляцией / компоновкой NetmonAPI в VS 2013. API поставляется с установкой MS Networkmonitor. Networkmonitor даже имеет объяснение в справке, как вы можете заставить его работать в VS. Я следовал инструкциям, как его настроить, попробовал пример из справки и потерпел неудачу. Я всегда получаю «LNK2019» Ошибка для семи символов.

Пример кода, который я использую:

#include "Stdafx.h"#include "windows.h"#include "stdio.h"#include "stdlib.h"#include "objbase.h"#include "ntddndis.h"#include "NMApi.h"
void __stdcall
MyFrameIndication(HANDLE hCapEng, ULONG ulAdaptIdx, PVOID pContext, HANDLE hRawFrame)
{
HANDLE capFile = (HANDLE)pContext;
NmAddFrame(capFile, hRawFrame);
}

int __cdecl wmain(int argc, WCHAR* argv[])
{
ULONG ret;
ULONG adapterIndex = 0;

if(2 == argc)
adapterIndex = _wtol(argv[1]);

// Open a capture file for saving frames.
HANDLE myCapFile;
ULONG CapSize;
ret = NmCreateCaptureFile(L"20sec.cap", 20000000, NmCaptureFileWrapAround, &myCapFile, &CapSize);
if(ret != ERROR_SUCCESS)
{
wprintf(L"Error opening capture file, 0x%X\n", ret);
return ret;
}

// Open the capture engine.
HANDLE myCaptureEngine;
ret = NmOpenCaptureEngine(&myCaptureEngine);
if(ret != ERROR_SUCCESS)
{
wprintf(L"Error opening capture engine, 0x%X\n", ret);
NmCloseHandle(myCapFile);
return ret;
}

//Configure the adapter.
ret = NmConfigAdapter(myCaptureEngine, adapterIndex, MyFrameIndication, myCapFile);
if(ret != ERROR_SUCCESS)
{
wprintf(L"Error configuration adapter, 0x%X\n", ret);
NmCloseHandle(myCaptureEngine);
NmCloseHandle(myCapFile);
return ret;
}

//Start capturing frames.
wprintf(L"Capturing for 20 seconds\n");
NmStartCapture(myCaptureEngine, adapterIndex, NmLocalOnly);

Sleep(20000);

wprintf(L"Stopping capture\n");
NmStopCapture(myCaptureEngine, adapterIndex);

NmCloseHandle(myCaptureEngine);
NmCloseHandle(myCapFile);

return 0;
}

Одна из ошибок, которые я получаю:

  • ошибка LNK2019: неразрешенный внешний символ «_NmCloseHandle @ 4» в функции «_wmain».

Вот мои шаги:

  1. Установка комплекта драйверов Windows (WDK)
  2. Я создал новый консольный проект в VS 2013
  3. Добавление следующих каталогов в свойства проекта в разделе VC ++ — Directorys -> Include-Dir: «C: \ Program Files \ Microsoft Network Monitor 3 \ API», «C: \ WinDDK \ 7600.16385.1 \ inc \ api», » C: \ WinDDK \ 7600.16385.1 \ вкл \ ДДК»
  4. Добавление следующих каталогов в свойства проекта в VC ++ — Directorys -> Library-Dir: «C: \ Program Files \ Microsoft Network Monitor 3 \ API»
  5. Добавление «nmapi.lib» в компоновщик -> Ввод -> Дополнительные зависимости

Я не знаю, если у меня может быть проблема с совместимостью, потому что инструкции для VS 2005 и 2008 ..

Заранее спасибо!

0

Решение

Я думаю, что это проблема 32/64 бит.

В моем случае, у меня есть настольный компьютер с 64-битной ОС Windows 7.

У меня есть затмение с Windows SDK 7 toolchain.

У меня те же ошибки с твоей, но в другой среде.

введите описание изображения здесь

У меня также есть 64-разрядная версия Microsoft Network Monitor 3.4.

введите описание изображения здесь

Как видите, это 64-битная версия.

Итак, я успешно скомпилировал мою тестовую программу с параметром компоновщика ‘/ machine: x64’.

Эта проблема может быть в 64-битной библиотеке монитора без 32-битной поддержки.

Итак, я думаю, что вам нужен еще один вариант компоновщика, такой же, как и у меня.

Вот мой журнал компиляции с Windows SDK 7.

  1. x64 env + опция компоновщика

введите описание изображения здесь

  1. x86 env + опция компоновщика

введите описание изображения здесь

  1. x86 env + опция компоновщика отсутствует

введите описание изображения здесь

Обратитесь на сайт Microsoft Вот.

Слишком поздний ответ, может быть ..

0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]