gpt4 book ai didi

c++ - 没有 main() 的 Cpp 类中的 `undefined reference to ` main`

转载 作者:塔克拉玛干 更新时间:2023-11-02 23:05:01 29 4
gpt4 key购买 nike

我遇到了 this在试图得到答案时。但似乎张贴者有多个文件,但没有链接,因此出现错误。

但是,为什么在使用单个文件时会出现此错误?

g++ myClass.cpp  
/usr/lib/gcc/i686-redhat-linux/4.6.3/../../../crt1.o: In function `_start':
(.text+0x18): undefined reference to `main'
collect2: ld returned 1 exit status

为什么 main 在编译时是必需的(它从哪里找到我的代码中提到的 main)? main 是代码执行的起点,但为什么编译器会假设我在这里需要一个main。我可以在其他文件中定义它并使用 gcc -o 生成可执行文件吗?

或者我在代码中遗漏了导致错误的其他内容?

#include<iostream>
class myClass
{

public:
myClass()
{
std::cout<<"Constructor";
}

~myClass()
{
std::cout<<"Destructor";
}

};

最佳答案

main 不是编译源文件所必需的。有必要将程序链接到可执行文件 [1],因为程序必须从某处开始。

你需要告诉编译器“这不是我程序的全部,只编译,但不要链接”,使用'-c'选项,所以

g++ -c myClass.cpp

这将生成一个 myClass.o 文件,您稍后可以使用该文件,例如

g++ -o myprog myClass.o myOtherClass.o something_that_has_main.o -lsomelib

(显然,用项目中的任何名称替换名称)

[1] 假设您使用编译器附带的常规链接器脚本。也有“解决方法”,但我认为这超出了这个答案。

关于c++ - 没有 main() 的 Cpp 类中的 `undefined reference to ` main`,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16237405/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com