我刚刚被 VisualStudio2010(C + +)的一些重要警告击中了头部。
汇编的结果如下:
1 Debug is.obj: 警告 LNK4042: 对象指定不止一次; 额外的内容被忽略
1 Debug make.obj: 警告 LNK4042: 对象指定不止一次; 额外值被忽略
1 Debug view.obj: 警告 LNK4042: 对象指定不止一次; 额外的内容被忽略
错误 LNK2019: 未解析的外部符号 < code > void _ _ cdecl Test: : Identity: : view (void) (? view@Identity@test@@ YAXXZ)在函数void __cdecl test::identity::identity(void)
(? Identity@0test@@ YAXXZ) < br > 中引用 1 Identity.obj: 错误 LNK2019: 函数void __cdecl test::identity::identity(void)
中引用的未解析的外部符号void __cdecl test::identity::make(void)
(? make@Identity@test@@ YAXXZ)(? Identity@0test@@ YAXXZ)
1 range.obj: 错误 LNK2019: 函数void __cdecl test::range::range(void)
中引用的未解析外部符号void __cdecl test::range::is(void)
(? is@range@test@@ YAXXZ)(? range@0test@@ 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
已经两次传递给链接器,其中一次将被忽略。
不再搜索: 可视化已经整齐地压平了我的文件夹层次结构,因此无法整齐地编译源代码。
目前,我只是在考虑重命名这些文件,这应该能解决这个问题..。
... 但是有没有一种方法可以让 Visual Studio 不去平化文件层次结构呢?