我直接从一本关于C ++的书中采用了这个例子(缩短它以便更容易看出问题所在)。 我的类不会用g ++编译。课程是:
class stack{
private:
int count;
public:
void init(void);
};
inline void stack::init(void){
count= 0;
}
〜
正如您所看到的,我正在尝试在类中对我的函数进行原型化,然后在类之外定义它们。这本书正是我正在尝试的,但它不起作用。哪里出错了?是我的电脑(我正在使用Mac)。我得到的错误是问题,但也在这里:
user-MacBook-Pro:cplusplus trevortruog$ g++ Stack2.cpp
Undefined symbols for architecture x86_64: "_main", referenced from:
start in crt1.10.6.o ld: symbol(s) not found for architecture x86_64 collect2: ld returned 1 exit status
答案 0 :(得分:1)
代码编译得很好。它没有做任何有用的事情,因为它缺少main
函数,因此无法从中生成任何可执行文件。
这不是编译器中的错误,而是链接器中的错误,它正好抱怨缺少入口点。您可以从错误消息中看到:
ld:找不到架构的符号
首先,ld
是创建错误消息的应用程序的名称。 ld
是linker application,它由实际编译器(内部)调用。一旦调用它,代码就已经编译好了。
添加main
函数以解决链接器错误。
作为补充评论,代码使用了不好的做法。这肯定暗示你正在使用的编程书很糟糕。遗憾的是,糟糕的教材是C ++的祸根,即使正确教授,也是一种高度复杂的语言。帮自己一个忙,放弃这本书,转而使用a good one。