我刚刚被 Visual Studio 2010 (C++) 的一些重要警告狠狠地打了一顿。
编译给出以下输出:
1 Debug\is.obj :警告 LNK4042:多次指定对象;附加内容被忽略
1 Debug\make.obj :警告 LNK4042:多次指定对象;附加内容被忽略
1 Debug\view.obj :警告 LNK4042:多次指定对象;附加内容被忽略
1 Identity.obj:错误LNK2019:无法解析的外部符号void __cdecl
test::identity::view(void)
(?view@identity@test@@YAXXZ) 在函数中引用void __cdecl test::identity::identity(void)
(?identity@0test@@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)
(?is@range@test@@YAXXZ) 在函数中引用void __cdecl test::range::range(void)
(?范围@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 已经整齐地展平了我的文件夹层次结构,因此无法整齐地编译源代码。
目前,我只是想重命名文件,这应该可以解决问题......
...但是有没有办法让 Visual Studio 不展平文件层次结构?
我在链接器警告方面遇到了类似的问题LNK4042:多次指定对象;附加内容被忽略。就我而言,Visual Studio 尝试编译具有相同名称的头文件和源文件 -MyClass.h
and MyClass.cpp
。这是因为我改名了.cpp
文件至.h
Visual Studio 感到困惑。我通过查看中的编译器日志注意到了这个问题Debug
目录。要解决只需删除.h
从项目中删除文件,然后再次添加。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)