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”