了解"Undefined symbols for architecture"错误
Understanding a "Undefined symbols for architecture" error
好的,我是 c++ 的新手,所以我试图了解我可以从错误消息中获得哪些信息。
这是错误消息
建筑的未定义符号x86_64: "PieceClothing::P ieceClothing(int(",参考自: ClothingInventory::getPieceOfClothing(long( in ClothingInventory.o ClothingInventory::insertIntocloset(std::basic_string, std::分配器>(in ClothingInventory.o "PieceClothing::P ieceClothing((",引用自: ClothingInventory::ClothingInventory((in ClothingInventory.o ClothingInventory::ClothingInventory(std::basic_string, std::分配器>(in ClothingInventory.o std::map, std::分配器>>::operator[](long const&(in ClothingInventory.oLD:在建筑x86_64中找不到符号收集2:LD 返回 1 个退出状态
以下是我的理解:
- 有两个错误;
- 一个与getPieceOfClothing和insertIntocloset有关;
- 构造函数中的其他可能是关于我那里的地图和/或迭代器。
澄清一下,我不附加代码,因为问题的重点是理解我可以从消息中获得的所有信息。
感谢您的任何帮助。
错误实际上是关于构造函数的:
PieceClothing::PieceClothing(int)
PieceClothing::PieceClothing()
他们说没有找到他们的符号。这通常是以下任一迹象:
- 他们没有实现
- 它们已实现,但实现所在的文件未编译
- 您是从不与定义它们的模块链接的其他模块引用它们的
错误列表中的其他详细信息仅说明调用构造函数的位置。例如,如果您有:
ClothesInventory::getPieceOfClothing(long)
{
PieceClothing p;
}
您引用构造函数是因为您尝试创建该类型的对象。
其工作原理可以分为两部分:
1( 编译器检查定义类的头文件,并查看默认构造函数是否可用。它找到构造函数,所以它给出它的确定。
2(链接器开始工作。它在目标文件和引用的库中查找与您的调用匹配的符号。这就是你出错的地方。
该消息告诉您它找不到已声明的构造函数的定义 PieceClothing::PieceClothing(int)
和 PieceClothing::PieceClothing()
因此您需要检查是否已编写它们,如果是,则检查包含它们的对象文件是否构成链接的一部分。
如果链接器输出很详细,它应该显示正在链接的对象文件。
相关文章:
- 警告处理为错误这里有什么问题
- "error: no matching function for call to"构造函数错误
- boost::进程间消息队列引发错误
- C++,OpenCV,尝试显示图像时"OpenCV(4.3.0) Error: Assertion failed (size.width>0 && size.height>0)"此错误
- 有关插入适配器的错误。[错误]请求从 'back_insert_iterator<vector<>>' 类型转换为非标量类型
- QT在错误的班级中寻找空位
- 编译 OpenBLAS C++项目会产生错误"Undefined symbols for architecture x86_64"
- 使用多个文件时出现"Undefined symbols for architecture x86_64"错误
- 无法在 Xcode 中使用 Boost,不断收到"Undefined symbols for architecture"错误
- 将某些功能与 main.cpp 分离时出现"undefined symbols for architecture"错误,该怎么办?
- Xcode 错误:"2 duplicate symbols for architecture x86_64"
- XCode 错误"Undefined symbols for architecture x86_64" C++
- 了解"Undefined symbols for architecture"错误
- 在单独的 c++ 文件中初始化矢量时出现"undefined symbols for architecture"错误
- 链接错误:QtCore.framework/Versions/4/QtCore for Architecture x86
- 有错误"Undefined symbols for architecture x86_64"和"ld: symbol(s) not found for architecture x86_64"
- "Undefined symbols for Architecture x86_64 "未使用模板,可能存在语法错误
- Xcode 6 上针对目标 C 的错误'Undefined symbols for architecture x86_64 '
- Xcode 错误"not found for architecture" 。尝试不使用库的基本C++
- 操作系统字距错误: "ld: symbol(s) not found for architecture x86_64"