[英]C++ error - Undefined symbols for architecture x86_64:
我正在学习 C++ 并且有一个简单的 Date 类,我正在尝试为 Date 设置一个值。
这是源代码文件 -
日期.h
class Date{
private:
int month;
int day;
int year;
public:
Date();
void setDate(int m, int d, int y);
};
和日期.cpp
#include "Date.h"
Date::Date()
{
month = 1;
day = 1;
year = 80;
};
void Date :: setDate(int m1, int d1, int y1){
month = m1;
day = d1;
year = y1;
};
但是,当我编译代码时,我收到错误消息 -
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
有人可以帮忙吗?
谢谢
你缺少一个主要功能。 将此添加到新文件(如 main.cpp,并在编译和链接时包含它)或其他 .cpp 文件。
int main(int argc, char *argv[]) { }
并将您的代码放在大括号中以运行程序。
每个 C/C++ 程序都必须有一个main
函数,它无条件地作为程序执行的入口点。
int main(int argc, char** argv) {
Date d;
d.setDate(11, 19, 1984);
/* do something with this date... */
return 0;
}
一个常见的约定是将它放在main.cc
/ main.cpp
并确保在这种情况下, main.cpp
和Date.cpp
都被编译并链接到同一个目标二进制文件中。 如果无法解析main(int, char**)
链接器将无法继续。 如果这对您来说很明显,那么我只会要求您检查链接器命令行以确保包含包含main
的源/目标文件。
此外,随机 C++ 最佳实践指南:您应该有一个非默认构造函数,它接受setDate
所做的参数,并通过初始化列表将它们分配给您的成员变量。 在这种情况下,默认构造函数(无参数)对您的具体日期类毫无意义。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.