体系结构x86_64 vtable的未定义符号
Undefined symbols for architecture x86_64 vtable
我正试图在NetbeansC++for mac中执行一个项目,当我为一个名为servicio的类执行简单构造函数时,编译器会向我显示以下错误:
"/Applications/Xcode.app/Contents/Developer/usr/bin/make" -f nbproject/Makefile-Debug.mk QMAKE= SUBPROJECTS= .build-conf
"/Applications/Xcode.app/Contents/Developer/usr/bin/make" -f nbproject/Makefile-Debug.mk dist/Debug/GNU-MacOSX/medicos
mkdir -p dist/Debug/GNU-MacOSX
g++ -o dist/Debug/GNU-MacOSX/medicos build/Debug/GNU-MacOSX/agenda.o build/Debug/GNU-MacOSX/cita.o build/Debug/GNU-MacOSX/contenedor.o build/Debug/GNU-MacOSX/doctor.o build/Debug/GNU-MacOSX/fecha.o build/Debug/GNU-MacOSX/main.o build/Debug/GNU-MacOSX/objetoBase.o build/Debug/GNU-MacOSX/paciente.o build/Debug/GNU-MacOSX/padecimiento.o build/Debug/GNU-MacOSX/servicio.o
Undefined symbols for architecture x86_64:
"vtable for servicio", referenced from:
servicio::servicio(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >) in servicio.o
NOTE: a missing vtable usually means the first non-inline virtual member function has no definition.
ld: symbol(s) not found for architecture x86_64
clang: error: linker command failed with exit code 1 (use -v to see invocation)
make[2]: *** [dist/Debug/GNU-MacOSX/medicos] Error 1
make[1]: *** [.build-conf] Error 2
make: *** [.build-impl] Error 2
我真的不确定可能是什么问题,我是一个编程初学者,所以我对此了解不多,谢谢你的帮助。
PSA,因为这是谷歌搜索的热门结果:如果你使用Qt,这个错误也可能意味着你没有为该类构建MOC对象文件。
链接器打印这些错误,因为函数的定义不存在。您声明了3个函数,但只定义了构造函数。
擦除virtual
会有所帮助,因为这样链接器就不需要这些函数了。对于virtual
,链接器使用它们来创建vtable。
如果您在程序中的任何其他位置使用这些函数而没有定义它们,则会返回错误。
如果您使用QT,在绝大多数情况下,您会得到vtable错误,因为在将Q_OBJECT宏添加到文件后,您没有重新运行qmake。
信用额度:https://forum.qt.io/post/178663
注意:缺少vtable通常意味着第一个非内联虚拟成员函数没有定义。
那么,您声明的两个函数的定义在哪里呢?
virtual string toString() const;
virtual ~servicio();
它们不存在。编译器告诉你它们不存在。不,我花时间告诉你,编译器告诉你它们不存在,它们不存在。
这就是为什么编译器告诉你它们不存在的原因。因为它们不存在。
相关文章:
- vscode g++链路故障:体系结构x86_64的未定义符号
- 体系结构x86_64的未定义符号:std:terminate(),typeinfo,运算符delete[],运算符new
- C++ 中 dlsym 的未定义符号
- 仅在 MacOS 上析构函数的未定义符号
- OSX clang++:用于 cpp 文件中显式实例化模板的体系结构x86_64的未定义符号
- PCL 出错:体系结构x86_64 @pcl的未定义符号
- clang:错误:链接器命令失败,退出代码为 1(使用 -v 查看调用) - 体系结构的未定义符号 x86_64:
- 体系结构x86_64的未定义符号:链接器错误
- C++ std::vector<int> 体系结构的未定义符号 x86_64:
- 生成文件:体系结构x86_64的未定义符号
- libc++abi未定义符号:_ZTVN10__cxxabif120__si-class_type_infoE
- Xcode"体系结构x86_64的未定义符号"
- 体系结构x86_64的未定义符号:找不到原因
- SWIG链接器:未定义符号:_ZN2cv8fastFreeEPv(cv::fastFree(void*))
- 如何修复架构x86_64的未定义符号,Boost Asio 1.58
- 在Qt5上去静态库:架构的未定义符号x86_64:
- 体系结构x86_64的未定义符号:c++/ h 文件和 cpp 文件
- 监视 SDK 下的未定义符号"__Unwind_SjLj_Unregister"
- 使用 Boost/Python 的未定义符号 - 复杂
- 建筑x86_64的未定义符号:"vtkDebugLeaksManager::vtkDebugLeaksManager()",引用自: