Visual Studio 2015 Community Editionで次のプログラムをコンパイルしています。Visual StudioでVC++プログラムをNpcapでコンパイルする2015
#include "stdafx.h"
#include <stdlib.h>
#include <stdio.h>
#include <pcap.h>
int main(int argc, char **argv)
{
pcap_if_t *alldevsp, *device;
char errbuf[100];
int count = 1;
//First get the list of available devices
printf("Finding available devices ... ");
if (pcap_findalldevs(&alldevsp, errbuf))
{
printf("Error finding devices : %s", errbuf);
exit(1);
}
printf("Done");
//Print the available devices
printf("\nAvailable Devices are :\n");
for (device = alldevsp; device != NULL; device = device->next)
{
printf("%d. %s - %s\n", count, device->name, device->description);
count++;
}
return 0;
}
pcapについては、Npcap project @ GitHubからライブラリをダウンロードしました。 DLLを入手し、そのSDKライブラリをヘッダライブラリとリンカライブラリに使用するためのリリースをインストールしました。 DLLのインストールはリリースパッケージ0.0.8-r2から、SDKは0.0.7-r9からです。
ネット経由で環境を設定する方法をいくつか指摘したところ、以下の設定があります。
- 構成プロパティ - > C/C++ - >一般 - >追加インクルードディレクトリ - > SDKからのヘッダーフォルダへのパス。
- 構成プロパティ - > C/C++ - >プリプロセッサ - >プリプロセッサの定義 - > WIN32 _DEBUG _CONSOLE WPCAP HAVE_REMOTE
- 構成プロパティ - >リンカ - >一般 - >追加ライブラリディレクトリ - > SDKからライブラリフォルダへのパス。
- 構成プロパティ - >リンカ - >入力 - >追加の依存 - >リリースexeファイルからPacket.lib wpcap.lib
DLLがCにインストールされる:\ WINDOWS \ System32に\ Npcap。 システムはWindows 10 Homeです。
質問:
上記のプログラムが正常にコンパイルされます。
1>------ Build started: Project: HelloWorld, Configuration: Debug Win32 ------
1> HelloWorld.cpp
1> HelloWorld.vcxproj -> C:\Users\xxx\documents\visual studio 2015\Projects\HelloWorld\Debug\HelloWorld.exe
1> HelloWorld.vcxproj -> C:\Users\xxx\documents\visual studio 2015\Projects\HelloWorld\Debug\HelloWorld.pdb (Full PDB)
========== Build: 1 succeeded, 0 failed, 0 up-to-date, 0 skipped ==========
私が実行すると、wpcap.dllファイルが見つからないという不満がありました。私はVSだけでなくVC + +、私はグーグルと私はちょうど問題を乗り越えて、私はSystem32から.exeファイルが生成されていたフォルダにDLLをコピーしたと思った最も簡単な技術です。
このDLLの問題が解消した後は、今すぐになっています。
'HelloWorld.exe' (Win32): Loaded 'C:\Users\xxx\Documents\Visual Studio 2015\Projects\HelloWorld\Debug\HelloWorld.exe'. Symbols loaded.
'HelloWorld.exe' (Win32): Loaded 'C:\Windows\syswow64\ntdll.dll'. Cannot find or open the PDB file.
'HelloWorld.exe' (Win32): Loaded 'C:\Windows\syswow64\kernel32.dll'. Cannot find or open the PDB file.
'HelloWorld.exe' (Win32): Loaded 'C:\Windows\syswow64\KernelBase.dll'. Cannot find or open the PDB file.
'HelloWorld.exe' (Win32): Loaded 'C:\Windows\syswow64\ucrtbased.dll'. Cannot find or open the PDB file.
'HelloWorld.exe' (Win32): Loaded 'C:\Windows\syswow64\vcruntime140d.dll'. Cannot find or open the PDB file.
The thread 0x160c has exited with code -1073741701 (0xc000007b).
The thread 0xd5c has exited with code -1073741701 (0xc000007b).
The thread 0x16c4 has exited with code -1073741701 (0xc000007b).
The program '[9632] HelloWorld.exe' has exited with code -1073741701 (0xc000007b).
Google検索では、64ビットと32ビットのDLLが混在しているようです。私はこの問題のデバッグを開始する手がかりがありません。
解決してくれる人がいれば、本当に感謝します。
- exeフォルダにコピーするのではなくDLLを見つける方が良い方法です(VC++の世界では良い方法です)。
- 問題を引き起こしているDLLを見つける方法に関するヒント。
ありがとうございました。
多くのありがとうございました。問題を解決しました –