人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

DLLにライブラリをリンクしたいのです。具体的には、SDL_image.dllに、jpeg.lib,libpng13.lib等を含めたいのです。VC,MinGWでのリンク方法をご指南頂けないでしょうか?

●質問者: tired
●カテゴリ:コンピュータ
✍キーワード:DLL JPEG LIB MinGW VC
○ 状態 :終了
└ 回答数 : 2/2件

▽最新の回答へ

1 ● aki73ix
●34ポイント

http://www.libsdl.org/projects/SDL_image/

SDL_Image 1.2.4を確認してみましたが、

VisualCフォルダの中のプロジェクトを見ると

既にjpeg.lib/libpng13.libはプロジェクトに追加されています

もし誤って削除してしまったのであれば、

プロジェクト>プロジェクトへ追加>ファイル

でファイルの種別libにしてファイルを指定すればよいでしょう


ためしにVC6でコンパイルしてみましたが以下の手順で上手くいきました

まずSDL1.2.9をダウンロードして展開VisualCフォルダ内のSDLプロジェクトを開いて

includeパスをツールのオプションから追加>コンパイル>SDL.LIBを作成

次にSDL_Image 1.2.4を同様に展開後 SDL.LIBのパスをライブラリに、他のインクルードファイルをインクルードフォルダに追加しビルド

これで、jpeg.lib,libpng13.libやzdll.libをリンクしたSDL_Image.DLLが出来たことが確認できました

◎質問者からの返答

ちなみに、DLLのサイズはどの位でしょうか。

全て結合すると200KB以上になりそうです。

何故に上手くいくんだろう。


2 ● aki73ix
●33ポイント

2回目なので最後の回答になります、

>ちなみに、DLLのサイズはどの位でしょうか

124kですね

ちなみに、jpeg.lib,libpng13.libやzdll.libをリンクするということは

jpeg.dll,libpng13.dllやzdll.dllを1つのファイルに結合することを意味するのではなく、これらのDLLを呼び出すことが可能になるので、ファイルはそれほど大きくなりません(DLL自体はインポートは出来てもLIBから結合することは出来ません

libをリンクすることで、DLLファイルが、パスの通ったフォルダに有ることで呼び出せたり、LoadLibrary/GetProcAddress命令などで動的にロードしたりできるようになるわけです

http://www.marinecat.net/free/windows/gogohelp/dll_load.html

また、暗黙的リンクによるインポートによって LoadLibrary/GetProcAddressを使わなくてもDLLの関数が使えるようになりますが、これもDLLがパスに必要です

http://hp.vector.co.jp/authors/VA023539/tips/dll/003.htm

◎質問者からの返答

ありがとうございます。

うーん。やはり結合できないのでしょうか?

Jpeg.libのソースコードを入れて一緒にコンパイルリンクするとOKなのですが、スタティックライブラリ化して、SDL_imageに追加してもリンクしてくれないのです。

SDL_imageだけ結合できなくて、他は出来るのでインポート方法の違いかと思ったのですが良く分からなくて。

関連質問


●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ