
今日ずっとタイトルのエラーの解決を探してたんですが,なかなかうまくいきません.助けていただきたいです.よろしくお願いします.
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.1ベストアンサー
- 回答日時:
このエラーは「関数を宣言しているのに定義していない」場合によく出ます。
Parentクラス内のParent(int)とSetSeqID(...)をよく確認してみてください。
Loadクラスも怪しいです。
あるいはバグがあった頃のまま.objが更新されていないのかもしれません。
プロジェクトをクリーンするなどしてみてください。
ところで、なぜParent.cppが二つあるのでしょう?
別のクラスですか?1つのクラスを2つのcppに分けて書いているのですか?
この回答への補足
迅速なご返信ありがとうございます.
Parentクラス内は何度も見てみましたが,正しく定義もかけていると思います.参考書を見てやっていて,サンプルをそのまま入力してもみたんですが,このエラーが出てしまいました.
わかりづらくてすみません.
ゲームのシーケンスを作るために,階層に一つずつparentというクラスを入れるつくりです.
よって,別のクラスとなります.よろしくお願いします.
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
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- 英語 コウノトリの孵化 5 2022/10/19 09:07
- JavaScript javascriptで変数を組み込みたい 2 2023/01/13 09:52
- C言語・C++・C# 未解決の外部シンボル _printfが関数_mainで参照されました 1 2022/09/18 15:28
- C言語・C++・C# const char** p;のとき、free(p)でC4090エラーとなるのはなぜですか 3 2023/03/31 16:28
- Perl Perl の外部モジュールの利用方法 3 2022/07/10 18:34
- Perl Perlのエラーについてご教授ください。初心者です。 CGIを別サーバに移したところ、Perlのバー 5 2023/05/31 10:48
- Java Java プログラム public class Main { public static void 3 2023/08/10 23:46
- その他(プログラミング・Web制作) VS CodeでTEXファイルにPDF形式の図を挿入する方法 2 2023/01/19 11:56
- FX・外国為替取引 MQL5にて謎のエラーが発生!だれか対処を教えてください! 1 2023/03/25 15:59
- 英語 These were removed and the patient was placed on a 2 2023/04/18 21:37
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
外部依存関係について
-
外部シンボル" ~~"は未解決で...
-
Windowsアプリケーションをどう...
-
エラーについて
-
C言語のエラー LNK1120: 外部参照
-
DirectInput
-
python エラー
-
DLLファイルの逆コンパイラにつ...
-
エクセルのエラーメッセージ「4...
-
<unistd.h>をVisualStudioでつ...
-
VBAを何回も作り直して、容量が...
-
アプリケーションのDLLファイル...
-
” OS ビルド ” の意味が分か...
-
Excelのエラーで困ってます。
-
C言語でヘッダファイルにグロー...
-
Eclipseのブレークポイントが○...
-
実行後にコンパイルに失敗しま...
-
VB2008で定数に色の設定をした...
-
<math.h>ヘッダを入力している...
-
すべてのリビルド: 0 正常、 0 ...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
外部依存関係について
-
外部シンボル" ~~"は未解決で...
-
外部シンボルの未解決のエラー
-
LNK2019: 外部シンボル どのよ...
-
error LNK2001について
-
MFC C++ と C++/CLI の文字列
-
wsprintfのエラーについて
-
未解決の外部シンボル
-
PathIsDirectoryを使って
-
LNK2001(Pro*c)
-
C言語のエラー LNK1120: 外部参照
-
エラー 未解決の外部シンボル
-
C++ Builderでユニットの追加
-
パブリックシンボルとは?
-
IP Helper APIを使うとエラーが...
-
C++の関数をfortranから呼びた...
-
LNK2019: 未解決の外部シンボル...
-
『外部シンボル~未解決です。...
-
gdiplusのリンクエラー
-
このプログラムを動かしたいの...
おすすめ情報