• 締切済み

WinPcap4.0.2のDLLをVB6から利用したい

WinPcap4.0.2のソースファイルを使い、「wpcap.dll」のビルドを行いました。次にVBからこのDLLを利用したいと考えています。ソースの一部を変更することで利用できるのでしょうか? 開発環境:WindowsXPSP2 VC++6.0 WinPcap4.0.2のソースファイルを使い、「wpcap.dll」のビルドを行いました。VB6からこのDLLを使ってパケットキャプチャソフトを作ろうと思っています。そこで「wpcap.dll」のソースファイル”pcap.c”の関数 (例)int pcap_loop(pcap_t *p, int cnt, pcap_handler callback, u_char *user)を int __stdcall pcap_loop(pcap_t *p, int cnt, pcap_handler callback, u_char *user)に変更し ヘッダファイル”pcap.h” (例)int pcap_loop(pcap_t *, int, pcap_handler, u_char *);を int __stdcall pcap_loop(pcap_t *, int, pcap_handler, u_char *);に変更しました。 (他の関数も同様に変更しました。) DEFファイルについては、すでにあった”wpcap.def”を利用しています。 ここで「wpcap.dll」について構造を説明すると元々上記の関数をビルドして”libpcap.lib”というファイルが作成され 次にWin32用関数のソースをラッピングして、”libpcap.lib”を取り込む形で「wpcap.dll」が完成します。 ビルド自体はうまくいくのですが、WinPcapを利用するパケットキャプチャソフト(VCでビルドしたもの)からこのDLLを呼び出すと 「Sample.exeでハンドルされていないWin32の例外が発生しました」というエラーが表示される。 このソースファイルは http://www.winpcap.org/devel.htm ここからダウンロードすることができます。 また使用したキャプチャソフトは ”WinPcapを使用したパケットモニターの作成” http://codezine.jp/article/detail/126?p=1 サイトのものを利用しています。 ご助言をお願いします。

みんなの回答

noname#208124
noname#208124
回答No.2

サンプルサプリにインクルードしたヘッダも__stdcall装飾しましたか?

noname#79014
質問者

補足

補足が遅れまして申し訳ございません。 はいインクルードしたヘッダも装飾しています。

  • aris-wiz
  • ベストアンサー率38% (96/252)
回答No.1

どのように利用して、 「Sample.exeでハンドルされていないWin32の例外が発生しました」 というエラーが表示されたのでしょうか? VB6ならでもWINAPIは使えるはずなので、 関数のエクスポート自体がうまくいっているのなら、 動的リンクでLoadLibrary+GetProcAddressを使えば良いのでは? あと、提示されたページはどちらもC++なようですが、 VBとの関連が一切みえないです。 タイトルはC++で作成したDLLをVB6から利用したい というように読み取れますが、違いますでしょうか? それとも呼び出しは行っているけど、 呼び出した側の関数でアプリケーションエラーになるということ?

noname#79014
質問者

お礼

ご返答遅れまして申し訳ありません。 C++のこちらのソースを、VB6から利用するのが目的です。 ご指摘のとおり、VB6でサンプルプログラムを作成し、そこからDLLを呼び出す際に、エラーが発生しております。 VBの知識が無くご迷惑をおかけしました。 動的リンクでLoadLibrary+GetProcAddressを使ってみます。