Mac 下终端编译 C++失败的问题

2019-01-23 15:38:07 +08:00
 a505362678

做的是 C++教材上的普通示例。 就是将一个 cpp 文件分离成头文件和类定义函数和一个包含 main 函数的文件 但是我用终端运行的时候 提示如下所示问题

zaideMacBook-Air:VSCPP zaizai$ g++ /Users/zaizai/Desktop/VSCPP/6-5.cpp

Undefined symbols for architecture x86_64:

"GradeBook::inputGrades()", referenced from:

_main in 6-5-bfc560.o

"GradeBook::displayMessage()", referenced from:

 _main in 6-5-bfc560.o

"GradeBook::displayGradeReport()", referenced from:

 _main in 6-5-bfc560.o

"GradeBook::GradeBook(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >)", referenced from:</char></char>

_main in 6-5-bfc560.o

ld: symbol(s) not found for architecture x86_64

clang: error: linker command failed with exit code 1 (use -v to see invocation)

一共有三个文件 GradeBook.h 头文件 GradeBook.cpp 包含头文件中的类定义函数 6-5.cpp 包含 main 函数的程序文件

求大神教教 翻了网上一圈都没找到怎么回事 呜呜呜

2453 次点击
所在节点    C
7 条回复
neoblackcap
2019-01-23 15:55:54 +08:00
你都分离了,你不用连接的么?
aa514758835
2019-01-23 15:57:27 +08:00
看不懂,不知道现在是代码错了还是编译的时候错了
xiadong1994
2019-01-23 16:05:09 +08:00
你只编译了 6-5.cpp ,GradeBook.cpp 没有编译,所以链接的时候找不到 GradeBook.cpp 里面的 symbol。
你试试
g++ -o GradeBook.o -c GradeBook.cpp
g++ -o 6-5.o -c 6-5.cpp
g++ -o 6-5.out GradeBook.o 6-5.o
a505362678
2019-01-23 17:51:37 +08:00
@neoblackcap 蛤😳这样子的吗
a505362678
2019-01-23 17:52:11 +08:00
@xiadong1994 好的 我试试😳 小的给您磕头辣
a505362678
2019-01-23 17:53:00 +08:00
@aa514758835 😳新手还不会用 V2EX 的编辑器 不会贴图 所以不够详细
a505362678
2019-01-23 18:02:38 +08:00
@xiadong1994 😭谢谢 成功了

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/529836

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX