0

A.h追加のヘッダーファイルを含むdllプロジェクトがあります。A.cppoヘッダーを持つAhとB.cppが含まれます。Visual C ++プロジェクトに追加するB.cppと、コンパイラは多くのエラーを報告します:

Error   9   error LNK2005: "wchar_t * __stdcall aaa(int)" (?aaa@@YGPA_WH@Z) already defined in A.obj    C:\P\B.obj  pr1

B.cppプロジェクトディレクトリに残してもプロジェクトに追加しなくても問題はなく、プロジェクトは正常にコンパイルされます。

B.cppそれはファイルを追加する際の問題ですか?

4

3 に答える 3

1

拡張機能は影響を及ぼさず、あなたが望むものなら何でもいいのではないかと思いました。私が間違っている場合は訂正してください、しかし私はBhの名前をB.fssに変更できると思います、これをソースで定義し、コンパイラはコンパイルする必要があります

b.cppをプロジェクトに含めると、自動的にコンパイルされます。また、同じファイルの内容を他の場所にも含めると、その中のコードが再度コンパイルされ、重複した定義エラーが発生します。

于 2012-10-08T16:12:38.640 に答える
1

基本的に、1つの.cppファイルに宣言ではなく定義を持つものを含め、それをプロジェクトに追加すると、もちろん複数の定義エラーが発生します。B.cppの定義をBhに移動し、それをAに含めます。 cpp。問題はファイル拡張子ではありません。問題は、同じものの複数の定義がそのようなエラーにつながることを理解する必要があるということです。

于 2012-10-10T08:15:55.947 に答える
0

#includeヘッダーファイル用であり、他の.cppファイル用ではありません。

#include "B.cpp"A.cppから削除すると、正常に動作し始めます。

または、B.cppを含める場合は、B.cppの名前をBhに変更します。

于 2012-10-08T15:34:41.813 に答える