Visual Studio 2010(C ++)からの重要な警告に、頭を殴られたばかりです(ほとんどありません)。
コンパイルにより、次の出力が得られました。
1 Debug \ is.obj:警告LNK4042:オブジェクトが複数回指定されました。エクストラは無視され
ます1Debug \ make.obj:警告LNK4042:オブジェクトが複数回指定されました。エクストラは無視され
ます1Debug \ view.obj:警告LNK4042:オブジェクトが複数回指定されました。エクストラは無視され
ます1identity.obj :エラーLNK2019 :void __cdecl test::identity::view(void)
関数void __cdecl test::identity::identity(void)
(?identity @ 0test @@ YAXXZ)で参照される未解決の外部シンボル(?view @ identity @ test @@ YAXXZ)
1 identity.obj:エラーLNK2019 :未解決の外部シンボルvoid __cdecl test::identity::make(void)
(?make @ identity @ test @@ YAXXZ)関数void __cdecl test::identity::identity(void)
(?identity @ 0test @@ YAXXZ)で参照
1 range.obj:エラーLNK2019:void __cdecl test::range::is(void)
関数void __cdecl test::range::range(void)
(?range @ 0test )で参照される未解決の外部シンボル(?is @ range @ test @@ YAXXZ)@@ YAXXZ)
リンカーエラーは常にデバッグするのが面倒です...しかし、未解決の参照があったので、チェックしました...しかし、ソースは整形式です...そして最後にそれは私を襲いました:
私のフォルダ階層は次のようになります。
src/
identity/
is.cpp
make.cpp
view.cpp
range/
is.cpp
make.cpp
view.cpp
ソリューションの階層も同様です(「実際の」フォルダー構造を模倣するように常に設定しています)。
そして診断出力:
Debug\is.obj
Debug\make.obj
Debug\view.obj
.obj
がリンカに2回渡され、1つは無視されるという警告とともに。
これ以上検索しない:Visualはフォルダ階層をきちんとフラットにしているため、ソースをきちんとコンパイルできません。
現時点では、ファイルの名前を変更することを考えています。これで問題が解決するはずです...
...しかし、Visual Studioでファイル階層をフラット化しないようにする方法はありますか?