【问题标题】:Undefined symbols for architecture x86_64: "_main", referenced from: implicit entry/start for main executable架构 x86_64 的未定义符号:“_main”,引用自:主要可执行文件的隐式入口/启动
【发布时间】:2021-10-17 06:31:06
【问题描述】:
#include <unistd.h>
void    ft_print_alphabet(void)
{
    write(1, 
 "abcdefghijklmnopqrstuvwxyz", 26);
}

我尝试在 VS Code 中运行上述内容,但出现以下错误:

架构 x86_64 的未定义符号:

“_main”,引用自:

主可执行文件的隐式进入/启动

ld:未找到架构 x86_64 的符号

clang:错误:链接器命令失败,退出代码为 1(使用 -v 查看 调用)

【问题讨论】:

  • 您的书籍、课堂笔记或教程对 C 程序以及它开始执行的位置有何看法?也许您需要回到书本的开头(或阅读一些书)。

标签: c visual-studio-code


【解决方案1】:

您需要定义main 方法,例如:

int main(int argCount, char *args[]) {
    // Your App's main-thread loop here...
    return 0;
}

注意名称、返回类型和参数都是预定义签名的一部分,在有人运行应用程序时会搜索并执行该签名。

但请记住,GUI 应用程序可能有一些不同的签名(至少对于 Windows 来说是这样)。

【讨论】:

  • 效果很好,谢谢。所以我通常在 Bootcamp 中学习,你知道为什么之前的方法不起作用吗?会不会是它依赖于网络或那里的电脑。
  • @Malsaman 查看我的编辑:入口点(通常为main 方法)是应用程序的启动位置。
  • @Malsaman BTW,例如,您可能想学习和使用printf("something: %d", 1234)(因为我什至不知道您的write 调用是否有效)。
  • 可能有点迂腐,但 C 中不存在方法,只有函数。
  • @Top-Master 我不了解文档,但 AFAIK 是的,方法 = 成员函数。也许我错了。我相信this thread 中的答案似乎支持我所说的。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2022-12-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-05-06
  • 2014-11-05
  • 2017-02-06
相关资源
最近更新 更多