現在、C++DLLライブラリを構築しています。今日、私は紛らわしい問題に遭遇しました。このライブラリでは、クラスを定義できますが、関数は定義できません。具体的には、問題を説明するために次のコードを示します。
namespace fundamental
{
class Tree
{
public:
Tree() {};
~Tree() {};
int x;
};
/*int anyfunction()
{
return 1;
}*/
}
上記の定義はヘッダーファイルにあり、このファイルは他のファイルによって呼び出されます。私の問題は、関数部分(int anyfunction())にコメントを付けるとすべてがうまくいくことですが、この関数を追加すると、次のエラーが発生します。
page_analysis.obj : error LNK2005: "int __cdecl fundamental::anyfunction(void)" (?anyfunction@fundamental@@YAHXZ) already defined in geo_box.obj
1>pa_region_properties.obj : error LNK2005: "int __cdecl fundamental::anyfunction(void)" (?anyfunction@fundamental@@YAHXZ) already defined in geo_box.obj
私の質問は、なぜ関数に対してのみLNK2005エラーが発生し、クラスに対しては発生しないのかということです。何か案は?