【问题标题】:Duplicate symbol_main重复的符号_main
【发布时间】:2022-03-31 01:41:44
【问题描述】:

我一直在寻找解决这个问题的方法,但它们对我不起作用!我在编译程序时遇到了很多问题。 当我试图在 Xcode 中执行程序时出现:

/Users/LauraChaparro/Library/Developer/Xcode/DerivedData/Busqueda-ercduihvfosqcoczkrgljkkmgxam/Build/Intermediates/Busqueda.build/Debug/Busqueda.build/Objects-normal/x86_64/Uno.o 和 /Users 中的重复符号 _main /LauraChaparro/Library/Developer/Xcode/DerivedData/Busqueda-ercduihvfosqcoczkrgljkkmgxam/Build/Intermediates/Busqueda.build/Debug/Busqueda.build/Objects-normal/x86_64/main.o 用于架构 x86_64

我不明白为什么会这样!是一个 C++ 项目......或者如果你能推荐我另一个 IDE,我将非常感激!

【问题讨论】:

  • 我曾经将另一个小部件复制到另一个小部件中。所以我有两个@main。因此出现此错误消息

标签: c++ xcode


【解决方案1】:

看起来您在一些用于制作Uno.o 目标文件的代码中定义了main。您只能有一个main,因此用于构建库的对象不应定义main。这应该只在应用程序本身中定义。

这是一个链接器错误,您可能会在使用其他 IDE 时遇到它。您需要找到在Uno.o 中定义main 的位置并将其删除。

【讨论】:

  • 谢谢...终于可以运行了!
【解决方案2】:

您遇到的错误是链接器错误。它准确地告诉你出了什么问题。链接器发现它可以在多次查看目标文件时找到定义的符号 *_main*。这使得链接器无法创建目标文件的可执行文件,因为它无法告诉您要使用哪个符号。它继续告诉你它在哪里找到了这两个符号。

一次在 Uno.o 文件中(我假设它来自编译 Uno.cpp 文件) 另一个来自 main.o 文件(来自 main.cpp 文件)

这意味着,链接器可以通过某种方式在两个文件中找到 main 方法的符号。

这可能发生在:

  • 在 Uno.cpp 和 main.cpp 中中定义 ma​​in 函数
  • 已将 非内联 ma​​in 定义放置在标头中,并将其包含在 Uno.cpp 文件和 main.cpp 文件中(或包含另一个包括等等。)

作为您对另一个 IDE 的请求,我想提醒您,编译器错误或链接器错误都不是 IDE 中的错误,在绝大多数情况下,问题是 IDE 的用户做错了什么。

【讨论】:

  • 太棒了!学习从编译器和链接器中读取错误是一项重要的学习技能。
【解决方案3】:

这发生在我身上一次,请确保在您不希望 main 函数包含的文件中包含 .h 文件而不是 .c 文件。我的 include 语句有 .c 文件,它产生了同样的问题。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-03-23
    • 1970-01-01
    • 2014-05-18
    • 2014-05-20
    • 2015-05-04
    • 2012-04-10
    • 2012-10-28
    • 2019-12-03
    相关资源
    最近更新 更多