Apple Mach-O-Linker 错误:从(行)引用的变量在架构 x86-64 中找不到
Posted
技术标签:
【中文标题】Apple Mach-O-Linker 错误:从(行)引用的变量在架构 x86-64 中找不到【英文标题】:Apple Mach-O-Linker Error: Variable referenced from (line) not found in architecture x86-64 【发布时间】:2018-04-07 23:18:08 【问题描述】:我正在为一个类项目开发一个 C++ 程序,我正在将对象数据从文件加载到列表中。我已经设置好了,所以数据读取就像在成员函数中一样完成,然后将该对象推送到列表中,然后重复,直到没有更多数据要加载。
我收到此错误:
架构 x86_64 的未定义符号:
“Product::Product(Product const&)”,引用自:
std::__1::list ::push_back(Product const&) 在 Week-2.o
ld:未找到架构 x86_64 的符号
clang: error: 链接器命令失败,退出代码为 1(使用 -v 查看调用)
主要功能:
Product temp;
list <Product> allProducts;
if (!temp.loadInitalData())
cout << "There is no Product data available. Try a different option: ";
cin >> choice;
repeat = true;
else
while (temp.loadInitalData())
allProducts.push_back(temp); //This is where I'm getting the error
temp.viewMenu();
repeat = false;
产品的 loadInitalData() 函数:
bool Product::loadInitalData()
bool moreData = true;
fstream prodDatabase;
prodDatabase.open("ProductDatabase.csv", ios::out|ios::in|ios::binary);
if (!prodDatabase)
cout << "File could not be successfully opened\n";
moreData = false;
else
moreData = loadInitialItemData(prodDatabase);
return moreData;
我在 main.cpp 文件中链接了“Product.h”,以及 .有什么建议吗?
【问题讨论】:
【参考方案1】:您缺少 Product 类的复制构造函数。关于编译器何时提供如下所述的规则:
http://en.cppreference.com/w/cpp/language/copy_constructor
但如果复制 Product 对象是一项重要的操作,您可能仍需要编写一个。
考虑让您的列表成为 Product * 的列表(即指向 Product 的指针列表)。这样可以避免复制,并且很可能是您真正想要的。
【讨论】:
以上是关于Apple Mach-O-Linker 错误:从(行)引用的变量在架构 x86-64 中找不到的主要内容,如果未能解决你的问题,请参考以下文章
错误 IOS 10 - 无法从 https://mesu.apple.com/assets/ 复制资产类型 com.apple.MobileAsset.TextInput.SpellChecker 的
无法从 Apple 终端访问 SSL 站点和神秘的 curl 错误
错误消息:[MC] 从公共有效用户设置中读取和 [MC] systemgroup.com.apple.configurationprofiles 路径的系统组容器是