• ベストアンサー

exeファイルはどのdllを参照すべきか、知っているのでしょうか。

BLACKTALONの回答

回答No.5

>.LIBファイル名とそのパスはどのように教えるのでしょうか。 VC++ならば、、、ええとプロジェクトメニューの設定でプロジェクトの設定 ダイアログをひらき、リンクタブをクリックして、 オブジェクトライブラリモジュールセクションに記述する、だと思います。 これだとデバッグ時とリリースビルド時個別に設定できます。 で、Win32Applicationを作成するプロジェクトを生成させるとここには、kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.libと言う記述がすでにされているため、「ほぼ自動でできる」んだと思います。LIBファイルのパスは別な場所(ツールメニューのオプションをクリックし出てくるダイアログのディレクトリタブ)で設定があり、インストール時に勝手にやってくれているはずです。足りなければ追加できるかと。追加すべきLIBファイルはやはり自分で調べなくてはなりません。 なお、普通にプロジェクトに追加しても、なぜかちゃんとリンクできたりします(^^; プロジェクト個別にライブラリを変えることができることを考えると、ライブラリの追加はプロジェクトファイルに記述されているのでしょう(パスは共通設定のようです)。 統合環境でない場合はMakeFile等に記述するんでしょうね、きっと。 ヘッダファイルに関しては、たいていwindows.hをインクルードすれば事が足りるんで(こんな事言うと専門家の人たちに文句言われそうですが)。 >.LIBファイルというのはリンク時に参照されるものなので、実行時にはなくてもいいんですよね? でないと、開発環境のないパソコンでは実行できなくなりますよね?(笑) ちなみにLIBが2つしかないと言うことはまず無いと思います。きっとどこかにあるんだと思いますよ。 ダイナミックによるDLLロードが必要になる例を参考URLにあげておきます。 私も素人プログラマなんで(^^;経験が参考になれば幸いです。

参考URL:
http://www.microsoft.com/JAPAN/support/kb/articles/J048/2/21.htm?LN=JA&SD=SO&FR=0
noname#1176
質問者

お礼

みなさんありがとうございました。 締め切らせていただきます。特にBLACKTALONさん、ありがとうございました。 >>.LIBファイルというのはリンク時に参照されるものなので、実行時にはなくてもいいんですよね? >でないと、開発環境のないパソコンでは実行できなくなりますよね?(笑) >ちなみにLIBが2つしかないと言うことはまず無いと思います。きっとどこかにあるんだと思いますよ。 質問から離れるので流しますが、、、私がこのサイトを見るPC(開発環境はない。)では.LIBはC:\Program Files\ArchiverDLL\UNLHA32にあるUnlha32.libとUnlhavc.libの二つです。 (OSは98SE) あ、そうそう、私は質問で >「この関数はどこどこにある ○○.dll というdllに書いてあります」 >というふうに、リンカに教えてあげなくてはいけないのでしょうか。 >(それってまさか、ソースに書くわけじゃないですよね? ) などと書きました。 「ソースに書くわけではないですよね」というのは、今振り返ってみると、 私が「スタティックな方法」を念頭に置いて質問を書いていたからです。

noname#1176
質問者

補足

ありがとうございます。じゅうぶんです。わかりました。 本当におせわになりました。 (「補足」に書きましたが、もうほとんどお礼のつもりです。)

関連するQ&A

  • DLLを直接プログラム内に取り込んでEXEファイルを作れますか

    VC++.NETで開発を行う予定ですが、 そのときicmp.dllというDLLを使う予定です。 これに関する説明を読むと、将来サポートされない可能性があるとのことでした。 それで、このDLLをスタティックライブラリをリンクするように、EXE本体のなかに取り込んでおきたいのですが、そのようなことは、出来るのでしょうか。 つまり、icmp.dllのある環境で、exeファイルを作り、 icmp.dllのない環境で、そのexeファイルを実行させたいのですが、そのようなことはできるのでしょうか。

  • exeをdllの様に利用する方法

    以前、どこかのサイトで見たことなので記憶があいまいなのですが、exeファイルもdllの様にリンクして関数を呼び出せるというように記憶しています。 実際、可能なのでしょうか?だとすると具体的にどのように書けばよいのでしょうか。詳しく説明しているサイトやサンプルプログラムなど乗っているサイトがあれば教えてください。 環境はC/C++でVisual Studioです。 よろしくお願いします。

  • 「DLLファイル」とは?

    DLLファイルについて、よく分かりません。 たまにPHPなどでプログラムを組む時に、拡張ライブラリとして.dllファイルをextディレクトリに入れたりするのですが、本来DLLファイルはどのプログラミング言語からでも呼び出せるものなのでしょうか?(↓の説明を読むと、そんな気がしてしまうのですが)それとも、特定の言語のライブラリなどをdllと呼ぶようなイメージでよいのでしょうか?それとも、ぜんぜん別のものなのでしょうか? http://e-words.jp/w/DLL.html

  • EXEからDLLへ移植

    以前、下のような質問をさせていただいたものです。 http://oshiete1.goo.ne.jp/kotaeru.php3?q=1748227 EXE(実行形式)で既にあるプログラムをDLLとして移植したいのですが、うまくいきません。うまくいかない事象は上のページで質問しましてまだ解決しておりません。(ウインドウ内にCreateDialogを用いてダイアログを表示させようとしても表示されない) 実行形式で組まれたプログラム(ソース)をDLLに移植する時の一般的な方法、注意すべきところ、そのままソースを移植してもダメな理由(EXEとDLLの違い)などありましたら教えてください。同じようなことをした経験のある方など、よろしくお願い致します。

  • cygwin1.dll を必要としないCのexeファイルを作りたいです

    はじめまして、shigure2005と申します。 私は普段UNIX上でC言語のプログラムを書いているのですが、 わけあってWindows上で動くようにする必要が出てきました。 そのプログラムをそのままcygwinでコンパイルしたところ コンパイルでき、実行ファイルも問題なく実行できたのですが、 このままですとcygwin1.dllが必要になってしまいます。 ですので、これがなくてもすむような別のコンパイル方法を 教えていただければと思ったしだいです。 過去ログを探って、MinGWについては試してみたのですが、 コンパイルは問題なく通るのに、なぜか実行ファイルを 実行すると、うまく起動できません。Mingwは以下のファイルを ダウンロードしてインストールしました。 mingw-runtime-3.8.tar.gz mingw-utils-0.3.tar.gz MinGW-4.1.1.exe w32api-3.3.tar.gz binutils-2.15.91-20040904-1.tar.gz mingw32-make-3.80.0-3.exe PATHは「C:\mingw/bin;C:\cygwin/bin」の順に通していて、 コマンドプロンプトでコンパイルし、コンパイル後、 コンパイルに用いたdllがcygwin1.dllでないのを確認して います。また、helloworldなど簡単なプログラムなら、 Mingwでもうまくコンパイルできてます。cygwinとMingwで コンパイル性能に大きな差などがあるのでしょうか? また、cygwinだけでも、Mingw-runtimeをインストール すれば、cygwin1.dllを必要としない形式にコンパイル できるという話を聞いたのですが、ご存知の方が いらしたら教えてください。 どうぞよろしくお願いします。

  • EXEを起動するとDLLが見つからないエラー

    VC超初心者です。 あるベンダ提供のdllとヘッダファイル、libファイルすべてそろっています。 DLLを使用するにあたって、宣言を記述せずにlibファイルをインポートしました。 どうにかこうにかコーディングをしました。VisualC++でソースを開いて実行(F5)すると正常に動きました。 しかし、いざEXEファイルを作ってそれを実行すると「DLLが見つかりません」というエラーが出ます。 これはどうすれば回避できますか?

  • 読み込むDLLのディレクトリを変更したい

    Visual C++ 7.1を使用しています。 ライブラリを使って作成したアプリを配布するとき、 一緒にDLLファイルも配布しないと起動できませんよね? 通常は、DLLファイルのパスは実行ファイルと同じか、 system32などのディレクトリに入れなければ 「~~~.dllが見つかりません。」 みたいなエラーが表示されるかと思います。 (違ったらすみません) そうではなく、DLLファイルが10個以上ありますので、 実行ファイルと同じディレクトリだとややこしくなるため、 実行フォルダより1つ下の階層にまとめて置きたいのですが、 そのような事は可能なのでしょうか? できれば、LoadLibraryなどの関数は使わず、 何かしらの設定で出来るのであればそれが望ましいです。 可能でしたら、方法をご伝授いただけると助かります。 よろしくおねがいします。 サンプルですが構成としては以下のような感じです。 (※[ ]はフォルダ名を表します) [Main]  ReadMe.txt  実行ファイル.exe  [Image]   image1.png   image2.png  [Sound]   sound1.wav   sound2.wav  [DLL]   graphics2d.dll   input.dll   sound.dll   file.dll

  • PHPでexeファイル実行

    C言語でMPG形式の画像ファイルを読み込み、画像処理をしてテキスト形式で画像データを出力するプログラムを作成したのですが、 これをPHPプログラム内で動作させ、テキストデータ(できればバイナリのほうがいい)を読み取りたいと思います。 これはexeファイルをexecやsystem関数で実行することで解決できるのでしょうか? また、C言語の画像処理プログラムが画像を読み込んでからテキストデータを作成するまで1分ほどのタイムラグがあります。 どうすればPHP内の処理でexeファイル実行→exeがデータベースから画像を読み込む→ 1分処理待ち→テキスト作成→作成されたテキストデータをPHPで読み込み とできるのでしょうか? ちなみに、exeファイルとphpで作成した画像データベースはサーバー機に置くつもりです。 テキストデータを介さなくても、C言語プログラムからphpに直接データを渡す方法があればそちらのほうが望ましいです。 連続投稿で申し訳ないのですが、急を要するのでぜひともご解答お願いします。

    • ベストアンサー
    • PHP
  • C++DLLの明示的リンクに関して

    DLLを明示的リンク(LoadLibraryとGetProcAddressを使用して)で使うとき、C言語では、関数名がそのまま利用できますが、C++では、オーバーロード機能があるため、関数名が変化してしまいます。C++でDLLを明示的リンクで使用するにはどうしたら良いのですか?

  • exeファイル

    最近C言語を始めたのですが 早くも行き詰ってしまいました コンパイラを使って exeファイルを作ったのですが どうすればネット上でそのプログラムを使えるのでしょうか? 拡張子がexeのままだと使えないようなので・・・