ページ 11

リンクエラー

Posted: 2010年7月26日(月) 11:56
by yux
何度もすみません(__)Xです。

さっきの質問は解決したのですが、リンクしているときに、エラーが出てしまいました。

エラーは、

リンクしています...
key.obj : error LNK2001: 外部シンボル ""struct configpad_t configpad" (?configpad@@3Uconfigpad_t@@A)" は未解決です。
main.obj : error LNK2019: 未解決の外部シンボル "struct configpad_t configpad" (?configpad@@3Uconfigpad_t@@A) が関数 "int __cdecl ProcessLoop(void)" (?ProcessLoop@@YAHXZ) で参照されました。
main.obj : error LNK2001: 外部シンボル ""char * Key" (?Key@@3PADA)" は未解決です。
main.obj : error LNK2001: 外部シンボル ""struct music_t ms" (?ms@@3Umusic_t@@A)" は未解決です。
main.obj : error LNK2001: 外部シンボル ""struct ch_t ch" (?ch@@3Uch_t@@A)" は未解決です。
main.obj : error LNK2001: 外部シンボル ""struct back_t bc" (?bc@@3Uback_t@@A)" は未解決です。
G:\プログラミング\TeamX\DinosaurX\Debug\DinosaurX.exe : fatal error LNK1120: 外部参照 5 が未解決です。
ビルドログは "file://g:\プログラミング\TeamX\DinosaurX\Debug\BuildLog.htm" に保存されました。
DinosaurX - エラー 7、警告 0
========== ビルド: 0 正常終了、1 失敗、0 更新不要、0 スキップ ==========

というものです。

環境:WindowsXP HomeEdition
VisualC++2008ExpressEdition

お願いします。

Re:リンクエラー

Posted: 2010年7月26日(月) 12:07
by fatens
main.cppの先頭に
#define GLOBAL_INSTANCE
#include "global.h"
のように書いていますか?

Re:リンクエラー

Posted: 2010年7月26日(月) 12:25
by たかぎ
エラーが出るたびに質問していたのではキリがありません。
単純なケアレスミスによるエラーなら自己解決できるはずですし、そうでないなら根本的に理解できていないことが原因の場合が多いのではないでしょうか?
というわけで、入門書でも読みながら、簡単なことから確実に理解していくことを強くお勧めします。

Re:リンクエラー

Posted: 2010年7月26日(月) 12:38
by yux
#define GLOBAL_INSTANCEをコメントにしてました(__)

でもコメントを外すと、

g:\プログラミング\teamx\dinosaurx\head\global.h(12) : error C2086: 'char Key[256]' : 再定義されました。
g:\プログラミング\teamx\dinosaurx\head\global.h(12) : 'Key' の宣言を確認してください。
g:\プログラミング\teamx\dinosaurx\head\global.h(14) : error C2086: 'ch_t ch' : 再定義されました。
g:\プログラミング\teamx\dinosaurx\head\global.h(14) : 'ch' の宣言を確認してください。
g:\プログラミング\teamx\dinosaurx\head\global.h(15) : error C2086: 'back_t bc' : 再定義されました。
g:\プログラミング\teamx\dinosaurx\head\global.h(15) : 'bc' の宣言を確認してください。
g:\プログラミング\teamx\dinosaurx\head\global.h(16) : error C2086: 'music_t ms' : 再定義されました。
g:\プログラミング\teamx\dinosaurx\head\global.h(16) : 'ms' の宣言を確認してください。
g:\プログラミング\teamx\dinosaurx\head\global.h(17) : error C2086: 'configpad_t configpad' : 再定義されました。
g:\プログラミング\teamx\dinosaurx\head\global.h(17) : 'configpad' の宣言を確認してください。
ビルドログは "file://g:\プログラミング\TeamX\DinosaurX\Debug\BuildLog.htm" に保存されました。
DinosaurX - エラー 5、警告 0
========== ビルド: 0 正常終了、1 失敗、0 更新不要、0 スキップ ==========

と出てきました。

Re:リンクエラー

Posted: 2010年7月27日(火) 08:46
by ぜらーちん
GLOBAL_INSTANCEは使った事がないので、あれですが
今簡単に調べてみたところ、externを省略出来るマクロを設定されているようですね

全文が分からないのでこちらを見ての予想ですが、
http://www.play21.jp/board/formz.cgi?ac ... tree#57486

global.hで、構造体の宣言の関数が入っているstruct.hをよんでますか?
ch_tとかは、struct.hに入っているのを使っているようなので
構造体宣言もしていない以上、struct.hを呼び出さないと使えないと思います

Re:リンクエラー

Posted: 2010年7月27日(火) 09:08
by yux
ぜらーちんさんの言われた事をやってみると、エラーが5つに減りました!
後5つなので、たかぎさんの言うとおり、基本を理解して、後は自力でやってみたいと思います!