Visual C++ 2010 - 致命错误 LNK1169:找到一个或多个多重定义符号
Posted
技术标签:
【中文标题】Visual C++ 2010 - 致命错误 LNK1169:找到一个或多个多重定义符号【英文标题】:Visual C++ 2010 - fatal error LNK1169: one or more multiply defined symbols found 【发布时间】:2011-06-28 12:27:50 【问题描述】:这是一个程序:
#include <iostream>
using namespace std;
int main()
cout << "Enter a number";
int i;
cin >> i;
try
if( i == 0 ) throw 0;
if( i == 2 ) throw "error";
catch( int i )
cout << "can't divide by 0";
catch( ... )
cout << "catching other exceptions";
在编译(Windows 7 上的 Microsoft Visual C++ 2010 Express)时,我收到以下错误消息:
致命错误 LNK1169:一个或多个 找到多个定义的符号
【问题讨论】:
尝试删除代码直到错误消失——这会给你一个线索。 我没有看到在 XP 上使用 Visual Studio C++ 2010 的错误。 我喜欢你这个问题的第一行!无论如何,它在 linux 上使用 g++ 对我来说编译得很好。 此代码在 dev c++ ver4.9.9.2 中编译并运行良好 也许您的代码中的其他地方还有另一个 int main? 【参考方案1】:其实这段代码没有错误。
源文件的数量可能是问题所在。
在同一编译器中将此代码作为新项目尝试,或尝试从文本区域左侧(即您正在编写代码的位置)的source files
选项中删除文件
这应该会编译。
【讨论】:
为什么源文件的数量会成为问题? /真正好奇 它编译整个项目并找到多个主要方法。 明白了。我以为您是在说源文件的数量可能是问题所在。好像可以编译的文件数量有限制。我现在知道了。谢谢。【参考方案2】:最后,我认为我找到了最合理的问题解释,因为您知道我们通常在 .cpp 文件中将 main 分配为整数(int main),有时我们可能会在同一个项目中编写多个 .cpp 文件使用相同的 (int main () ).so 对于程序,这意味着我们不小心在同一个项目文件夹中重复了两次相同的功能。我们要做的是这只是用 (int main) 编写一个 .cpp 文件,而同一个项目中的其他 .cpp 文件用 (int submain) 编写它们,看看会发生什么。
【讨论】:
【参考方案3】:尝试将您的int main()
更改为int submain()
。
【讨论】:
请不要回答已接受多年前答案的旧线程。用你的精力来帮助解决当前的问题【参考方案4】:我怀疑你的错误来自这一行:
catch(int i)
您已经在此范围内获得了一个类似名称的变量。此外,您应该捕获异常,而不是整数。
【讨论】:
我很确定 i 在不同的范围内。以上是关于Visual C++ 2010 - 致命错误 LNK1169:找到一个或多个多重定义符号的主要内容,如果未能解决你的问题,请参考以下文章
visual c++,链接:致命错误 LNK1104:无法打开文件
visual C++ 6.0 问题:链接:致命错误LNK1104:无法打开文件“调试/ d.exe“ 执行link.exe时出错。
Visual Studio 2010:致命错误 C1189:#error
MongoDB 和 Visual C++ 2008 链接器错误
在 Visual Studio 2010 中调试时出现致命错误 HRESULT=0x80131c08
Visual Studio 2010 C++,无法打开包含文件:“afxwin.h”、“TCHAR.H”和“cassert”