重要なお知らせ

「教えて! goo」は2025年9月17日(水)をもちまして、サービスを終了いたします。詳細はこちら>

【GOLF me!】初月無料お試し

今まで疑問に感じつつないがしろにしていた部分なんですが、
例えばWin32APIを使用してプログラミングする時にコンパイラはリンクの際にwindowsのシステムフォルダ内にあるdllファイルを参照してリンクするんですよね(あってます?)?ではコンソールプログラム(dos上のプログラム)をリンクする際にはどうなるのでしょうか(例えばCの標準関数のライブラリはどこにあるのでしょうか?)?
私の予想では標準関数に関してはコンパイラが予め用意している静的ライブラリを使ってリンクしているんじゃないかと思うのですが実際どうなんでしょうか?

大した質問でもないのに長々とした文章になってしまいましたがよろしくお願いします。

A 回答 (3件)

> 例えばCの標準関数のライブラリはどこにあるのでしょうか?



Borland C++Compiler 5.5の場合
 C:\borland\bcc55\Lib

Visual C++ 6.0の場合
 C:\Program Files\Microsoft Visual Studio\VC98\Lib

APIで使われれるライブラリも同じ場所にあると思います。



> コンソールプログラム(dos上のプログラム)をリンクする際

コマンドラインで実行する場合、「bcc32 ソースファイル」「cl ソースファイル」のようにコンパイルとリンクを同時に行う場合には標準ライブラリの指定を省略することが可能ですが、コンパイルとリンクを別々に実行する場合はリンクコマンドで標準ライブラリの指定が必要です。
「c0x32.obj cw32mt.lib import32.lib」、「kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib」など。
    • good
    • 0

>リンクの際にwindowsのシステムフォルダ内にあるdllファイルを参照してリンクするんですよね



違います。リンク時は参照しません。
dllの情報を持ったライブラリをリンクします。

場所は既に回答されている通りです。
    • good
    • 0

> 例えばCの標準関数のライブラリはどこにあるのでしょうか?



Borland C++Compiler 5.5の場合
 C:\borland\bcc55\Lib

Visual C++ 6.0の場合
 C:\Program Files\Microsoft Visual Studio\VC98\Lib

APIで使われれるライブラリも同じ場所にあると思います。



> コンソールプログラム(dos上のプログラム)をリンクする際

コマンドラインからでは「bcc32 ソースファイル」「cl ソースファイル」でコンパイルとリンクを同時に行う場合には標準ライブラリの指定を省略することが可能ですが、コンパイルとリンクを別々に実行する場合はリンクコマンドで標準ライブラリの指定が必要です。
「c0x32.obj cw32mt.lib import32.lib」、「kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib」など。
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!