2009-03-14 4 views
5

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

通常、私はLoadLibrary/GetProcAddress/FreeLibraryメソッドを使わずにライブラリの関数にアクセスできますか?私は.libファイルがありません - それは普通ですか?

私は文字通りこれを見て過去2日間過ごしました。それは私がdllから使用したい関数を定義するヘッダファイルと.defファイルを与えられているので、各関数を手動で 'ロード'する必要はないはずです(LoadLibrary/GetProAddress/FreeLibrary) - in私のケースでは、.dllから約5または6つの関数を使用しますが、約70が使用可能であり、それは不便であり、不要なコードの混乱を招くようです。

ありがとうございました。

答えて

3

のVisual C++は、「LIBを持っています" - オンラインヘルプを参照してください。

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

2

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

ない、これがうまくいくかどうかわからが、あなたは試すことができます:

空のスタブと.DEFファイルと.Cファイルを作成します。 .libを生成するために、同じ名前のDLLとしてコンパイルします。既存のDLLがあなたのexeと同じディレクトリにあれば、新しいDLLを捨ててlibとリンクし、プログラムがロードしてバインドできるようにします。

ネイティブDLLの名前が厳密に指定されていないため、これが動作すると思います。 -

7

は、DLLのインポートライブラリを作成するには、いくつかの方法があり、Microsoftが独自の.DEFファイルを構築することにより、1を作成するための方法を説明します:

関連する問題