Mac编译分离的文件和类定义文件及main函数文件

2019-01-23  本文已影响0人  周日上楼梯

前言供检索:
Undefined symbols for architecture x86_64:

正文如下:

在编译书上范例时遇到困难 按照书上范例大概已经写出三个文件

6-5.cpp 包含main函数的文件
GradeBook.h 包含类及函数声明的头文件
GradeBook.cpp 包含类定义函数的文件

犯错原因 : 直接在终端输入 g++ 6-5.cpp 导致如下报错:

zaizaideMacBook-Air:VSCPP zaizai$ g++ 6-5.cpp
Undefined symbols for architecture x86_64:
  "GradeBook::inputGrades()", referenced from:
      _main in 6-5-ca2741.o
  "GradeBook::displayMessage()", referenced from:
      _main in 6-5-ca2741.o
  "GradeBook::displayGradeReport()", referenced from:
      _main in 6-5-ca2741.o
  "GradeBook::GradeBook(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >)", referenced from:
      _main in 6-5-ca2741.o
ld: symbol(s) not found for architecture x86_64
clang: error: linker command failed with exit code 1 (use -v to see invocation)

经过几小时搜索真的感到绝望 临午睡前在V2EX上发帖询问 惊喜的是睡醒后看到网友指出我的错误和改正方法 。呜呜呜 感觉到了全身的温暖!!
其建议如下:


107E3E7B-54B2-4004-AEB4-2B5DEEABE27F.png

随根据其方法在终端上依次输入

zaizaideMacBook-Air:VSCPP zaizai$ g++ -oGradeBook.o -c GradeBook.cpp
zaizaideMacBook-Air:VSCPP zaizai$ g++ -o6-5.o -c 6-5.cpp
zaizaideMacBook-Air:VSCPP zaizai$ g++ -o 6-5.out GradeBook.o 6-5.o

输入完上述命令后 文件夹出现6-5.out文件 ,迫于喜悦 然后我输入./a.out 结果又报错0.0 再次试的时候 输入 g++ 6-5.cpp 礽报错0.0 最后直接拖入6-5.out 终于终端编译成功!

嗷 写出来给大家分享下并记录下 0.0 每每遇到问题 比如之前我写的C程设 现代方法习题找遍网上都是错误方法 ,最后自己写下正确方法放出来 这次也是白花数个小时 不过也许是这数个小时促成和网友们上网时间点的相遇 其中蕴含着不放弃的必然性和网友回复的偶然性 让我很开心0.0

上一篇下一篇

猜你喜欢

热点阅读