ページ 11

コンパイルエラー

Posted: 2009年9月12日(土) 21:08
by ディア
BCC使用です。

Error: 外部シンボル 'ChangeWindowMode(int)' が未解決
Error: 外部シンボル 'DxLib_Init()' が未解決
Error: 外部シンボル 'SetDrawScreen(int)' が未解決
Error: 外部シンボル 'ScreenFlip()' が未解決Error: 外部シンボル 'ProcessMessage()' が未解決
Error: 外部シンボル 'ClearDrawScreen()' が未解決
Error: 外部シンボル 'GetHitKeyStateAll(char *)' が未解決
Error: 外部シンボル 'DxLib_End()' が未解決

というコンパイルエラーが出てしまいます・・・

2章のmain.cppの内容をコピペし、コンパイルした結果です。

解決させるにはどうしたらいいでしょうか?

Re:コンパイルエラー

Posted: 2009年9月12日(土) 22:13
by box
> というコンパイルエラーが出てしまいます・・・

リンクエラーです。コンパイルエラーではありません。

> 2章のmain.cppの内容をコピペし、コンパイルした結果です。

main.cppだけでは、実行プログラムを作成できないのではないでしょうか。
未解決だといわれている関数群を含むソースファイルも、
いっしょにコンパイル・リンクする必要があるのではないでしょうか。


【リンクエラーとは】
main.cpp内のmain関数から、funcという関数を呼び出しているとします。
そして、func関数の定義はmain.cppには存在しないとします。

この状態で、main.cppだけから実行ファイルを作成しようとした場合を考えます。

main.cppをコンパイルすると、
「main関数から、どこかにあるfunc関数を呼び出すのだな」という情報を保持し、
コンパイルは正常に終了します。main.cppからのオブジェクトファイルができます。

次に、C言語の標準関数(例:printf)や、自作の関数群を
結合させて(リンク)、実行ファイルを作成しようとします。

このとき、func関数をコンパイルしたオブジェクトファイルが
見あたりませんので、リンカー(リンクを担当するプログラム)は
「func関数が未解決」という判断を下します。実行ファイルは作成できません。
これが、リンクエラーです。

Re:コンパイルエラー

Posted: 2009年9月13日(日) 21:04
by Hermit
良くは見てませんが、
Error: 外部シンボル 'DxLib_Init()' が未解決
Error: 外部シンボル 'DxLib_End()' が未解決
があるので、DxLib が、正常にリンクできるように設定されていないのでは?

未解決といわれる関数郡を、コンパイルして、ライブラリにしたものが、DxLib の中に有ると思われますので、
それをリンク出来る状態にすればいけそうな気がしますが。
2章以前の、環境の設定の仕方を見直したほうがいい気がします。

Re:コンパイルエラー

Posted: 2009年9月13日(日) 21:17
by ディア
返答、有難うございます。

無事、解決することができました。