【问题标题】:Visual C++ 2010 - fatal error LNK1169: one or more multiply defined symbols foundVisual C++ 2010 - 致命错误 LNK1169:找到一个或多个多重定义符号
【发布时间】: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?

标签: c++ visual-c++ exception visual-c++-2010-express


【解决方案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 在不同的范围内。
    猜你喜欢
    • 1970-01-01
    • 2012-09-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多