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

回答の条件
  • 1人50回まで
  • 登録:
  • 終了:2006/03/28 02:05:02
※ 有料アンケート・ポイント付き質問機能は2023年2月28日に終了しました。

回答2件)

id:aki73ix No.1

回答回数5224ベストアンサー獲得回数27

ポイント34pt

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が出来たことが確認できました

id:tired

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

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

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

2006/03/21 10:48:20
id:aki73ix No.2

回答回数5224ベストアンサー獲得回数27

ポイント33pt

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

id:tired

ありがとうございます。

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

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

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

2006/03/21 11:18:58
  • id:aki73ix
    ダイアリから転載です

    これ、プロジェクトに追加するんじゃなくて、オプションでライブラリパスに追加してみると上手くいくんじゃないでしょうか?

この質問への反応(ブックマークコメント)

トラックバック

  • スタティックライブラリ化後の追加 人力日記 2006-03-21 12:17:58
    question:1142874093 Jpeg.libのソースコードを入れて一緒にコンパイルリンクするとOKなのですが、 スタティックライブラリ化して、SDL_imageに追加してもリンクしてくれないのです。 SDL_imageだけ結
「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

回答リクエストを送信したユーザーはいません