2

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

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

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

4

2 回答 2

8

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

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

于 2012-05-18T11:00:12.723 回答
3

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

一旦进入 Uno.o 文件(我将假设来自编译 Uno.cpp 文件),另一个来自 main.o 文件(来自 main.cpp 文件)

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

这可能通过以下方式发生:

  • Uno.cpp 和 main.cpp中定义一个函数
  • 在头文件中放置了非内联 定义并将其包含在 Uno.cpp 文件和 main.cpp 文件中(或包含另一个包含的包含等等。)

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

于 2012-05-18T11:20:33.017 回答