
こんにちは。
VC++を使ってプログラムを作っているのですが、コンパイルは通るのですが、リンク時に以下のエラーメッセージが出ます。どなたか解決方法を教えてください。
(仮にプロジェクト名をPROJECTとします。)
リンク中...
PROJECT.obj : error LNK2005: "struct AA pAA" (?pAA@@3UAA@@A) はすでに PROJECT.obj で定義されています
Debug/PROJECT.exe : fatal error LNK1169: 1 つ以上の複数回定義されているシンボルが見つかりました
link.exe の実行エラー
開発ツール:VC++6.0 MFCを使用しています。
OS:Windows XP SP2
上記現象の発生した契機は、ヘッダファイル内で定義している構造体に構造体変数を加えたことによります。
【発生前】
・ヘッダ内
struct AA
{
};
・ソース内
AA pAA;
【発生後】
・ヘッダ内
struct AA
{
}pAA;
・ソース
(ソース内での構造体変数の宣言を削除)
以上で、どなたか心当たりのある方はご教授をお願いいたします。
No.3
- 回答日時:
ヘッダ側で
extern struct AA pAA;
と宣言だけ行い、ソースファイルのどれか一つで
struct AA pAA;
と実体を定義してください。
No.2
- 回答日時:
No.1さんに補足です。
ヘッダファイルの先頭と最後に、複数インクルード防止マクロを定義しておきましょう。
※ヘッダファイルの先頭
#if !defined(HOGEHOGE_XXXXXXX)
#define HOGEHOGE_XXXXXXX
※ヘッダファイルの最後
#endif
※HOGEHOGE_XXXXXXX は、任意でユニークな文字列。
ご回答ありがとうございます。
お礼が遅くなり、申し訳ありません。
おお~そういうばそのような方法もありましたね!
すっかり忘れていました・・・
どうもありがとうございました!
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
このQ&Aを見た人はこんなQ&Aも見ています
-
多重定義が起きている?--lnk2005エラー:VC++
C言語・C++・C#
-
<unistd.h>をVisualStudioでつかえるようにする
C言語・C++・C#
-
std::stringからLPCWSTR型への変換
C言語・C++・C#
-
-
4
「fatal error C1189」を回避するには?
C言語・C++・C#
-
5
戻り値で構造体を返すことは可能でしょうか?
C言語・C++・C#
-
6
外部依存関係について
C言語・C++・C#
-
7
VC++から引数付きexeファイルの実行
C言語・C++・C#
-
8
構文エラー;"が型の前にありませんとは、どうしたら解決できるのですか。"
C言語・C++・C#
-
9
既定のコンストラクタがない?
C言語・C++・C#
-
10
読み込み中にアクセス違反が発生しました、と出ます。これを回避することは
C言語・C++・C#
-
11
CString から LPCTSTRの型に変換
C言語・C++・C#
-
12
fstream型オブジェクトを関数の仮引数にする
C言語・C++・C#
-
13
#define _CRT_SECURE_NO_WARNINGS について
C言語・C++・C#
-
14
テキストデータをそのままバイナリへ
C言語・C++・C#
-
15
別アプリの起動、終了について
C言語・C++・C#
-
16
C言語 exitの使い方
C言語・C++・C#
-
17
charからLPTSTRへの変換方法
C言語・C++・C#
-
18
CStringのFindで文字列検索を行いたいのですが
C言語・C++・C#
-
19
C++のfor文について
C言語・C++・C#
-
20
再起呼び出しの回数をカウントするプログラム
C言語・C++・C#
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
Makefile作成時の拡張子.oとは?
-
ILSpyで、デコンパイルできない。
-
VBAを何回も作り直して、容量が...
-
” OS ビルド ” の意味が分か...
-
C言語でヘッダファイルにグロー...
-
エクセルVBAではRound...
-
マクロ コンパイルがグレーバック
-
「fatal error C1189」を回避す...
-
<math.h>があるのにsqrtが・...
-
2G以上のファイル操作
-
不要な #include
-
外部シンボル "_main"は未解決です
-
Visual C++ 2008で<stdio.h>の...
-
gccでの分割コンパイルについて
-
漢字のコメントをはずすとコン...
-
VB6で開発中…標準モジュール間...
-
Visual Studio .net ヘッダーフ...
-
includeと#include
-
[c++] <pthread.h>がinclude で...
-
C++コンパイル時に『 C1083: in...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
” OS ビルド ” の意味が分か...
-
VBAを何回も作り直して、容量が...
-
エクセルVBAではRound...
-
Makefile作成時の拡張子.oとは?
-
「fatal error C1189」を回避す...
-
C言語でヘッダファイルにグロー...
-
ILSpyで、デコンパイルできない。
-
<math.h>があるのにsqrtが・...
-
外部シンボル "_main"は未解決です
-
マクロ コンパイルがグレーバック
-
セミコロンについて
-
コンパイルエラー:ユーザ定義...
-
【VC++6.0(MFC)】警告「LINK : ...
-
1 つ以上の複数回定義されてい...
-
VB6とInputManソフトの関係
-
C言語でmからnまでの合計を求め...
-
ExcelVBAで『ByRef 引数の型が...
-
コンパイルに失敗しました、と...
-
漢字のコメントをはずすとコン...
-
C言語のコンパイルができません
おすすめ情報