5

.dll、.hヘッダー、および.defファイルで構成される小さなライブラリが提供されました。ライブラリはCで書かれていると確信していますが、おそらくC++です。

通常話題になっているLoadLibrary/GetProcAddress / FreeLibraryメソッドを使用せずに、ライブラリ内の関数にアクセスすることは可能ですか。.libファイルがありません-通常はありますか?

私は文字通り過去2日間これを調べて過ごしました。dllから使用したい関数を定義するヘッダーファイルと.defファイルが与えられているので、各関数を手動で明示的に「ロード」する必要はないようです(LoadLibrary / GetProAddress / FreeLibrary)-in私の場合、.dllから約5または6個の関数を使用しますが、約70個の関数が使用可能であり、非常に手間がかかり、不要なコードの混乱が発生するようです。

アドバイスありがとうございます。

4

3 に答える 3

7

DLL のインポート ライブラリを作成するには、いくつかの方法があります。Microsoft は、独自の .DEF ファイルを作成して作成する方法を文書化しています。

于 2009-03-14T18:40:20.177 に答える
3

VisualC++には「lib」があります。オンラインヘルプで調べてください。

「lib/def」を使用して.libファイルを作成します。

于 2009-03-14T19:01:17.240 に答える
2

lib ファイルが必要です。このファイルには、リンカーが DLL のインポート テーブルを作成するために必要なスタブが含まれています。

これが機能するかどうかはわかりませんが、試すことができます:

空のスタブを含む .C ファイルと .DEF ファイルを作成します。まったく同じ名前の DLL としてコンパイルして、.lib を生成します。既存の DLL が exe と同じディレクトリにある場合、新しい DLL を破棄し、lib にリンクします。プログラムはそれを読み込んでバインドできるはずです。

ネイティブ DLL は厳密に名前が付けられていないため、これでうまくいくと思います。

于 2009-03-14T18:37:57.827 に答える