Qt编译报错:symbol(s) not found for architecture x86_64(macOS 10.13.3)
解决Qt编译链接错误:symbol(s) not found for architecture x86_64
嘿,兄弟,我一眼就瞅到问题出在哪了!你遇到的这个链接错误,核心原因是槽函数只在头文件里声明了,但没有在cpp文件中实现,链接器找不到这些函数的具体代码,自然就会抛出symbol(s) not found的报错啦。下面给你一步步解决的方案:
1. 补全槽函数的实现
你的gui类里声明了find()和replaceFuckingText()两个槽函数,但gui.cpp里完全没有它们的定义。把下面的代码添加到gui.cpp文件中(你可以根据自己的需求修改函数内部逻辑):
// 实现find槽函数 void gui::find() { QString target = searchText->text(); QString content = textField->text(); // 这里写你的搜索逻辑,比如定位文本位置 qDebug() << "正在搜索:" << target; } // 实现replaceFuckingText槽函数 void gui::replaceFuckingText() { QString searchStr = searchText->text(); QString replaceStr = replaceText->text(); QString content = textField->text(); content.replace(searchStr, replaceStr); textField->setText(content); }
2. 补全信号槽的连接代码
你代码里的connect语句没写完,把完整的连接代码添加到gui构造函数的末尾(show();之后):
// 旧版信号槽语法(Qt5兼容) connect(search, SIGNAL(clicked()), this, SLOT(find())); connect(replace, SIGNAL(clicked()), this, SLOT(replaceFuckingText())); // 更推荐Qt5的新语法(类型安全,编译期就能检查错误) // connect(search, &QPushButton::clicked, this, &gui::find); // connect(replace, &QPushButton::clicked, this, &gui::replaceFuckingText);
3. 检查项目配置文件(.pro)
确保你的.pro文件里添加了widgets模块,因为Qt5需要显式声明使用桌面控件:
QT += core widgets TARGET = YourProjectName TEMPLATE = app SOURCES += main.cpp \ gui.cpp HEADERS += gui.h
4. 重新构建项目
做完上面的修改后,按照以下步骤操作:
- 执行
qmake(Qt Creator里可以点击"构建"->"运行qmake") - 清理项目("构建"->"清理项目")
- 重新编译构建项目
这样应该就能解决链接错误啦~
内容的提问来源于stack exchange,提问作者Virtual
相关产品推荐
相关产品推荐

