今日ずっとタイトルのエラーの解決を探してたんですが,なかなかうまくいきません.助けていただきたいです.よろしくお願いします.
VC++2008を使ってます.エラーは,
―――――
エラー2error LNK2001: 外部シンボル ""public: void __thiscall Sequence::Game::Parent::SetSeqID(enum Sequence::Game::Parent::Seq)" (?SetSeqID@Parent@Game@Sequence@@QAEXW4Seq@123@@Z)" は未解決です。Load.obj
―――――
エラー9error LNK2019: 未解決の外部シンボル "public: __thiscall Sequence::Game::Parent::Parent(int)" (??0Parent@Game@Sequence@@QAE@H@Z) が関数 "public: void __thiscall Sequence::Parent::Update(void)" (?Update@Parent@Sequence@@QAEXXZ) で参照されました。Parent.obj
という類の2種類のエラーが全部で10個ほどと「外部参照○が未解決です」というものです.
Parent.cppというものは
Sequence/Parent.cpp
Sequence/Game/Parent.cpp と2種類あります.
ちゃんとSequence/Game/Parent.cppにこのヘッダで宣言したものの定義をかいているんですが,
このcppのソースを全部消したり,エラーになるようなことを書いてビルドしても 同じエラーが同じだけでてしまうので, 恐らく,このソースをうまく一緒にコンパイルできてないのだと思います というところまで 今日調べてわかりました.
ちゃんとプロジェクトの中には入ってますし,フォルダ構成も間違ってないと思うんですが,リビルトしてみると Parent.cpp が一回しかコンパイルされてません.
このエラーの一歩前の段階は Sequence/Parent.cpp に関しての外部シンボルの未解決エラーでした.
解決策をいただきたいです.よろしくお願いします.
No.5
- 回答日時:
とりあえず, 落ち着いて「必要なファイルが全てコンパイル・リンクされている」ことを確認する方がいいような気がするなぁ.
この回答への補足
ご返信ありがとうございます.そうなんです,parent.cppのどちらか一つがコンパイルされないようなんです.そこで名前を変えたら,
■■■ できました ■■■
結局プログラム自体はいじくらなかったんです.
1,Sequence/Parent.cpp の名前を Sequence/GParent.cpp などと変更
2,1をプロジェクトに追加
3,以前の名前のプロジェクトをプロジェクトから除外
4,VC++を再起動
でエラーがなくなりました.
そこで時間がある方に回答していただきたいです.
質問1, ディレクトリの階層が違って名前が同じソースファイルがあって,どちらか一つがコンパイルしなかった原因を予想でもいいので教えていただきたいです.(宣言の定義の書かれているソースをコンパイルできなかったからこのエラーがでたと思われます.)
質問2, このような解決策って実際にあるものなんでしょうか.再起動しないと反映されないような.#1さんの言っていた クリーン というのはこういうことなんでしょうか.
でも,まずは解決できたのでよかったです. ホントに皆さん考えていただきありがとうございました.m(_ _)m
お礼はここにまとめて書かせていただきます.
少し煮え切らない解決でしたが,先に進めました,もっと知識が増えたあとでもう一度考えてみたいと思います.
ありがとうございました.
ポイントは解決策とは関係をなく配分します.
では皆さん,ありがとうございました.またよろしくお願いします.m(_ _)m
No.4
- 回答日時:
LNK2001は純粋仮想関数の定義が継承先で無い場合に発生しました。
なので継承に何か問題があるのかもしれません。
親クラスも調べてみては?
ちなみに子クラスで純粋仮想関数の宣言が無い場合は、「抽象クラスをインスタンス化できません」とエラーがでます。
この回答への補足
度々ご返信ありがとうございます.
このプログラムには継承を利用していないので(自分はまだ応用できないレベルです,すみません.)継承の問題はないと思います.
さっき開いたら,最初のSequence/Game/Parentに関する10個ほどのエラーとは打って変わって今度はSequence/Parentに関する
エラー2error LNK2001: 外部シンボル ""public: void __thiscall Sequence::Parent::SetSeqID(enum Sequence::Parent::SeqID)" (?SetSeqID@Parent@Sequence@@QAEXW4SeqID@12@@Z)" は未解決です。StageSelect.obj
というようなエラーが8つほどでてきました.なんなんでしょう...
混乱してきました.
No.3
- 回答日時:
宣言の他に定義が存在し、コンパイルエラーではなくてリンカエラーであるのでclass内classの参照とか、namespace内namespaceの問題はクリアしているでしょうから、一番あり得そうなのが、
Load.cppがSequence/直下にあり、各ヘッダーの所在が
Sequence/Parent.h
Sequence/Game/Parent.h
と仮定すると、
Load.cpp(or h)に
#include ".\Game\Parent.h"の記述がなければエラー2になるだろうし、
エラー9はLNK2019:で "public: __thiscall Sequence::Game::Parent::Parent(int)"だからint引数のコンストラクタがないんじゃないかな?デフォルトコンストラクタはあっても。
とりあえず予想はこんなところです。
この回答への補足
ご返信ありがとうございます.
Load.cpp(or h) はSequence/Game/Load.cpp(or h)にあり,また,
#include "Sequence/Game/Parent.h"と書いてあります.
あぁ,このエラーはそうやって考えるんですか.勉強になります. でも,ちゃんとコンストラクタは設定してありました.
Parentのどちらかが読み込まれないのが気になったのでSequence/Parent.cpp(or h)の方を Sequence/GParent.cpp(or h)にして整理したら 両方コンパイルされるようになったんですが,やはりエラーは変わりませんでした. この同じ名前だとなぜコンパイルされないのか,,それも疑問です. 参考書のサンプルは同じでも平気でした.
No.2
- 回答日時:
#1さんが書かれた「関数」の他に、
「変数を宣言したが定義していない」場合も
「外部シンボル未解決」エラーが出ます。
>Sequence/Game/Parent.cppにこのヘッダで宣言したものの定義をかいているんですが,
「このヘッダ」とは、どのヘッダでしょうか?
言及していないため、詳細がわかりません。
この回答への補足
ご返信ありがとうございます.
宣言しただけのものとかがないか今日ずっと探していたんですが,やはりないようです.
このヘッダというのはSequence/Game/Parent.h のことです.すみません.慣れないエラーなのでどこを鮮明に言及すればいいかわかりませんでした.
あと,Sequence/Game/Parent.h のように,ディレクトリの中に置いたものは,名前空間Sequence , Game を利用して合わせています.
自分が気になるところを言及させていただくと,
Sequence/Game/Parent.h に Sequence::Game::Parentのクラスなど宣言
Sequence/Game/Parent.cpp に その定義 を書いています.
それで↑の.cppの方を消してもそれに関してのエラーは出ずに,今までと同じエラーがでるので,これが読み込まれていないのではないかと感じました.その解決策がわからないのです.
よろしくお願いいたします.m(_ _)m
No.1ベストアンサー
- 回答日時:
このエラーは「関数を宣言しているのに定義していない」場合によく出ます。
Parentクラス内のParent(int)とSetSeqID(...)をよく確認してみてください。
Loadクラスも怪しいです。
あるいはバグがあった頃のまま.objが更新されていないのかもしれません。
プロジェクトをクリーンするなどしてみてください。
ところで、なぜParent.cppが二つあるのでしょう?
別のクラスですか?1つのクラスを2つのcppに分けて書いているのですか?
この回答への補足
迅速なご返信ありがとうございます.
Parentクラス内は何度も見てみましたが,正しく定義もかけていると思います.参考書を見てやっていて,サンプルをそのまま入力してもみたんですが,このエラーが出てしまいました.
わかりづらくてすみません.
ゲームのシーケンスを作るために,階層に一つずつparentというクラスを入れるつくりです.
よって,別のクラスとなります.よろしくお願いします.
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
このQ&Aを見た人はこんなQ&Aも見ています
-
天使と悪魔選手権
悪魔がこんなささやきをしていたら、天使のあなたはなんと言って止めますか?
-
フォロワー20万人のアカウントであなたのあるあるを披露してみませんか?
あなたが普段思っている「これまだ誰も言ってなかったけど共感されるだろうな」というあるあるを教えてください
-
映画のエンドロール観る派?観ない派?
映画が終わった後、すぐに席を立って帰る方もちらほら見かけます。皆さんはエンドロールの最後まで観ていきますか?
-
海外旅行から帰ってきたら、まず何を食べる?
帰国して1番食べたくなるもの、食べたくなるだろうなと思うもの、皆さんはありますか?
-
天使と悪魔選手権
悪魔がこんなささやきをしていたら、天使のあなたはなんと言って止めますか?
-
error LNK2001について
C言語・C++・C#
-
LNK2019: 外部シンボル どのように追い解決すれば
C言語・C++・C#
-
「fatal error C1189」を回避するには?
C言語・C++・C#
-
-
4
既定のコンストラクタがない?
C言語・C++・C#
-
5
外部シンボル ~~"は未解決ですというエラーが直らない"
C言語・C++・C#
-
6
LINKエラーについて
C言語・C++・C#
-
7
DWORDの実際の型は何でしょうか
C言語・C++・C#
-
8
構文エラー;"が型の前にありませんとは、どうしたら解決できるのですか。"
C言語・C++・C#
-
9
多重定義が起きている?--lnk2005エラー:VC++
C言語・C++・C#
-
10
【VS2008 C++】2つのプロジェクト間で共通の関数を使いたい
C言語・C++・C#
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・人生のプチ美学を教えてください!!
- ・10秒目をつむったら…
- ・あなたの習慣について教えてください!!
- ・牛、豚、鶏、どれか一つ食べられなくなるとしたら?
- ・【大喜利】【投稿~9/18】 おとぎ話『桃太郎』の知られざるエピソード
- ・街中で見かけて「グッときた人」の思い出
- ・「一気に最後まで読んだ」本、教えて下さい!
- ・幼稚園時代「何組」でしたか?
- ・激凹みから立ち直る方法
- ・1つだけ過去を変えられるとしたら?
- ・【あるあるbot連動企画】あるあるbotに投稿したけど採用されなかったあるある募集
- ・【あるあるbot連動企画】フォロワー20万人のアカウントであなたのあるあるを披露してみませんか?
- ・映画のエンドロール観る派?観ない派?
- ・海外旅行から帰ってきたら、まず何を食べる?
- ・誕生日にもらった意外なもの
- ・天使と悪魔選手権
- ・ちょっと先の未来クイズ第2問
- ・【大喜利】【投稿~9/7】 ロボットの住む世界で流行ってる罰ゲームとは?
- ・推しミネラルウォーターはありますか?
- ・都道府県穴埋めゲーム
- ・この人頭いいなと思ったエピソード
- ・準・究極の選択
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
実行ファイルの容量を減らした...
-
error LNK2001について
-
PathIsDirectoryを使って
-
クラスのメンバ変数の宣言方法
-
ロベールのC++入門講座
-
MFC C++ と C++/CLI の文字列
-
外部依存関係について
-
vs2010 mfc拡張DLL LNK2019
-
「外部シンボルが未解決」につ...
-
LNK2019: 外部シンボル どのよ...
-
python エラー
-
エクセルのエラーメッセージ「4...
-
アプリケーションのDLLファイル...
-
<unistd.h>をVisualStudioでつ...
-
デコンパイル?について
-
VBAを何回も作り直して、容量が...
-
[COBOL] ソースの復帰
-
自作DLLってkernel32.dllやuser...
-
1 つ以上の複数回定義されてい...
-
バッチからsqlplusの接続エラー...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
外部依存関係について
-
教えてgooについて
-
外部シンボル" ~~"は未解決で...
-
error LNK2001について
-
LNK2019: 外部シンボル どのよ...
-
C言語のエラー LNK1120: 外部参照
-
C++でのエラー LNK2001
-
外部シンボルの未解決のエラー
-
wsprintfのエラーについて
-
このプログラムを動かしたいの...
-
パブリックシンボルとは?
-
未解決の外部シンボル
-
外部シンボル未解決 LNK2001
-
Microsoft visual C++ 2010 Exp...
-
LNK2001(Pro*c)
-
外部シンボルについて
-
DLL呼び出しAPのリンクエラーに...
-
C++ Builderでユニットの追加
-
C++/CLIでfstream(.NET 3.5)
-
libdecodeqrをVC6.0のダイアロ...
おすすめ情報