未解決の外部シンボル

フォーラム(掲示板)ルール
フォーラム(掲示板)ルールはこちら  ※コードを貼り付ける場合は [code][/code] で囲って下さい。詳しくはこちら
ヒロ

未解決の外部シンボル

#1

投稿記事 by ヒロ » 16年前

前回はありがとうございました。
あれから此処で公開されているプロジェクトの中にフォルダを作って、その中で龍神録プログラミングの館を参考にしてゲームを作っているのですが、13章に相当するところで37ものエラーが出てしまいました。
全て「項目名.obj : error LNK2001(2019): 外部シンボル ""------"は未解決です。」と出るのですがどうすれば良いのでしょうか?
今回もDLしたプロジェクトではきちんとコンパイルされます。
使っているものはMicrosoft Visual C++ 2008 Express Editionです。

具体的には下のような内容のエラーが出てきます(このようなエラーが37個出てきます)
1>char.obj : error LNK2001: 外部シンボル ""struct ch_t ch" (?ch@@3Uch_t@@A)" は未解決です。

御津凪

Re:未解決の外部シンボル

#2

投稿記事 by 御津凪 » 16年前

グローバル変数の宣言に問題がある可能性があります。
上記のようなエラーでは、
struct ch_t 型 の、 ch という変数が定義されていない状態です。
(extern で変数が宣言されているが、実体の変数が見つからなかったということ)

extern 周りについては、竜神録プログラミングの5章を確認するか、検索してみてください。

ちなみに、
「外部シンボル "------"は未解決です。」
といった類のエラーは実体が存在しないことを意味しています。

ヒロ

Re:未解決の外部シンボル

#3

投稿記事 by ヒロ » 16年前

自己解決致しました。
main.cppの定数定義の識別子の名前が違うという初歩的なミスでした^^;

コンパイルはできるようになったのですが生成したexeファイルを実行するとread errorになってしまいます。
必要な画像等は入っていると思うのですが・・・
ご指導お願いします。

ヒロ

Re:未解決の外部シンボル

#4

投稿記事 by ヒロ » 16年前

御津凪様ありがとうございます。
何度も何度も手間かけてしまってすいません。
仰るとおりです。存在しない識別子を入力したのですから変数が見つからなくて当然ですね^^;

御津凪

Re:未解決の外部シンボル

#5

投稿記事 by 御津凪 » 16年前

exe ファイルを直接実行すると、作業ディレクトリが exe ファイルの場所になります。
このとき、開くファイルパスが "char.bmp" だった場合、 "char.bmp" が exe ファイルと同じ場所になくてはなりません。

また、VC++ から「デバッグ実行」などで実行させた時は、デフォルトで作業ディレクトリが
ソリューションファイル(*.sln)のある場所になります。
そのため、直接 exe ファイルを開くのとでは作業ディレクトリが違うことになり、
VC++ から実行出来たのに、 exe ファイルから開くと実行できない、
といったことが起こります。(データの置き場所によっては逆もあり)

これを回避するには、プロジェクトのプロパティにあるデバッグカテゴリで、
作業ディレクトリを、"$(OutDir)" と記入("は不要)してください。
恐らくこれで双方とも exe ファイルのある場所を基点にファイルを探してくれるはずです。

ヒロ

Re:未解決の外部シンボル

#6

投稿記事 by ヒロ » 16年前

すいません。書き方が悪かったですね。
デバッグ実行をしたときもexeファイルを実行したときも両方でエラーが出てしまっています。
12章まではきちんと実行されたのですが・・・

ヒロ

Re:未解決の外部シンボル

#7

投稿記事 by ヒロ » 16年前

申し訳ないです。こちらも自己解決しました。
エクセルデータを再入力したところ正常に作動しました。

皆さまご迷惑をおかけしました。
これからはもっと自分で色々試してから書き込ませて頂きます。

閉鎖

“C言語何でも質問掲示板” へ戻る