最後に WinAPI を使用してからかなり時間が経ちましたが、記憶が正しければ、 または のいずれかを使用して実行時にライブラリを動的にロードする必要がありLoadLibrary
ますLoadLibraryEx
。その後、使用したい特定の関数のアドレスを取得する必要がありますGetProcAddress
。あなたの場合、これはmbnEthernetOpen
(私が推測する)でしょう。
この面倒な作業の後、ようやくmbnEthernetOpen
DLL から取得したばかりの関数ポインターを介して呼び出すことができます。
編集:コメントを読んだ後、.lib
ファイルを生成する方法を含むように回答を拡張することにしました。
まず、VLCのwikiには、そのプロセスを徹底的に追った非常によく書かれた記事があります。ただし、わかりやすくするために、ここで繰り返します。
[スタート] メニューからVisual Studio Command Promptを見つけて実行します。wiki によると、これはMicrosoft Visual Studioエントリの下にあるはずです。
Visual Studioのコマンド プロンプトで、次のコマンドラインを実行して DLL ファイルからシンボルを抽出します。 と をそれぞれ正しい入力ファイルと出力ファイルへのパスにdumpbin /exports input.dll > exports.def
置き換えてくださいinput.dll
。exports.def
この時点で、テキスト エディターを起動し、新しく生成され.def
たファイルを次のように編集できます。
EXPORTS
libvlc_add_intf
libvlc_audio_get_channel
libvlc_audio_get_mute
libvlc_audio_get_track
libvlc_audio_get_track_count
libvlc_audio_get_track_description
libvlc_audio_get_volume
…
明らかに、エクスポートされたシンボルの名前は、DLL によって異なります。
.def
ただし、何らかの理由でこれらすべてを手動で行いたくない場合は、VLC wiki で記事を書いたクールな人たちが、ファイルを自動的に生成するワンショット コマンドラインを思い付きました。
echo EXPORTS > output.def
for /f "usebackq tokens=4,* delims=_ " %i in (`dumpbin /exports input.dll`) do if %i==tag echo %i_%j >> exports.def
tag
ここでも、一時的な名前を修正された同等のものに置き換えてください。さらに、その記号に注意してください。VLC の例ではlibvlc
、これは でした。例では、エクスポートされた各シンボルの最初の部分です。さて、あなたは単一の関数を示したので、これがどうあるべきかわかりませんが、エクスポートされたシンボルを見て理解できると確信しています.
最後に、.lib
ファイルにあるこれらのエクスポートされたシンボルからファイルを生成し.def
ます。
lib /def:exports.def /out:library.lib /machine:x86
/machine
プラットフォームによって異なる場合があることに注意してください。
ほらね。これは、.lib
ファイルからファイルを生成する方法です.dll
。