1. ホーム
  2. c++

C++ classic error already defined in *****.obj Solution

2022-02-11 06:41:28

私のプログラムは以下のような形をしています。 ヘッダーファイル.h、メイン関数.cpp、演算子関数.cpp。演算子関数にヘッダーファイルが含まれ、さらに主関数に演算子関数.cppが含まれる . ランタイムエラーです。

エラーの症状。

リンクする...
xz.obj : エラー LNK2005: "public: __thiscall XZ::XZ(void)" (
? ?0XZ@QAE@XZ ) は xzmain.obj で既に定義されています。
xz.obj : error LNK2005: "public: void __thiscall XZ::pdc(void)" (
pdc@XZ@QAEXXZ ) は xzmain.obj で既に定義されています。
xz.obj : エラー LNK2005: "public: void __thiscall XZ::pcd(void)" (
pcd@XZ@QAEXXZ ) は xzmain.obj で既に定義されています。
xz.obj : error LNK2005: "public: void __thiscall XZ::pzf(void)" (
pzf@XZ@QAEXXZ ) は xzmain.obj で既に定義されています。
xz.obj : エラー LNK2005: "public: __thiscall XZ::‾XZ(void)" (
? ?1XZ@QAE@XZ ) は xzmain.obj で既に定義されています。
Debug/xzmain.exe : 致命的なエラー LNK1169: 1 つ以上の多重定義されたシンボルが見つかりました。
link.exeの実行に失敗しました。

解決策1

main関数に含まれるoperation function.cppをheader file.hに変更すると、上記のようにエラーを修正することができます。

解決策2

コンパイラを開き直し、先ほど作ったファイルを開き直し、まずmain function.cppを開き、コンパイルして実行し、外部依存関係のあるFileviewを開き、そこにヘッダーファイル.hと操作関数.cppを追加し、main function.cppをコンパイルして実行すると、プログラムが正常に実行されます!

 記事転載元 http://hi.baidu.com/3512/blog/item/d568bc340c002cb4d0a2d3d6.html