我知道这个问题已经被问了好几千次,但我尝试了所有的解决方案而没有任何帮助。
我在Qt做了一个小程序,过了一会儿我得到了这个错误信息:
symbol(s) not found for architecture x86_64
linker command failed with exit code 1 (use -v to see invocation)
我重新编写了qmake
命令和重建项目,没有任何效果。
我是Qt的新手。
我在mac os 10.13.3上使用Qt版本5.10.0
以下是我的文件:
gui.h
#ifndef GUI_H
#define GUI_H
#include <QWidget>
#include <QPainter>
#include <QHBoxLayout>
#include <QVBoxLayout>
#include <QPushButton>
#include <QLineEdit>
class gui : public QWidget
{
Q_OBJECT
public:
gui(QWidget *parent = 0);
~gui();
private:
QHBoxLayout *hbox1;
QHBoxLayout *hbox2;
QVBoxLayout *vbox;
QPushButton *search;
QPushButton *replace;
QLineEdit *searchText;
QLineEdit *replaceText;
QLineEdit *textField;
public slots:
void find();
void replaceFuckingText();
};
#endif // GUI_H
gui.cpp
#include "gui.h"
gui::gui(QWidget *parent)
: QWidget(parent)
{
hbox1 = new QHBoxLayout();
hbox2 = new QHBoxLayout();
vbox = new QVBoxLayout();
search = new QPushButton("Search");
replace = new QPushButton("Replace");
searchText = new QLineEdit();
replaceText = new QLineEdit();
textField = new QLineEdit();
hbox1->addWidget(searchText);
hbox1->addWidget(replaceText);
vbox->addLayout(hbox1);
hbox2->addWidget(search);
hbox2->addWidget(replace);
vbox->addLayout(hbox2);
vbox->addWidget(textField);
setLayout(vbox);
show();
connect(replace,SIGNAL(clicked()), this, SLOT(replaceFuckingText()));
}
gui::~gui()
{
}
void gui::replaceFuckingText() {
QString searchTextValue = searchText->text();
QString replaceTextValue = replaceText->text();
QString textToReplace = textField->text();
textToReplace.replace(searchTextValue,replaceTextValue);
textField->setText(textToReplace);
}
main.cpp中:
#include "gui.h"
#include <QApplication>
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
gui w;
w.show();
return a.exec();
}
我希望你能帮助我。我正在处理这个错误一个多星期了。 如果您需要更多信息,请随时提出,我会发布。
答案 0 :(得分:2)
MacOS上的未找到架构x86_64
的符号
通常不难诊断,通常它来自你在标题中定义但没有正确实现的东西!
要知道为什么你在Qt Creator中点击了Compiler Output
这个消息,你很可能会看到make
错误的来源,在你的代码中我看到下面的错误:
架构x86_64的未定义符号:“gui :: find()”,引用 从: moc_gui.o中的gui :: qt_static_metacall(QObject *,QMetaObject :: Call,int,void **)ld:找不到架构x86_64的符号
从此消息中看起来您已在标头中声明了gui::find()
插槽或方法,但在cpp
中该插槽没有任何实现位置!
因此,您需要的只是在gui::find()
文件中添加代码cpp
的代码。
当我将以下内容添加到你的gui.cpp时,代码编译没有问题:
void gui::find()
{
// do some staff
}
答案 1 :(得分:0)
如果您真的很累,并且不小心将.cpp
文件中的HEADERS
文件而不是SOURCES
中的.pro
添加到# Applying GridSearch to find best parameters
from sklearn.model_selection import GridSearchCV
parameters = [{ 'criterion' : ['gini'], 'splitter':['best','random'], 'min_samples_split':[0.1,0.2,0.3,0.4,0.5],
'min_samples_leaf': [1,2,3,4,5]},
{'criterion' : ['entropy'], 'splitter':['best','random'], 'min_samples_split':[0.1,0.2,0.3,0.4,0.5],
'min_samples_leaf': [1,2,3,4,5]} ]
gridsearch = GridSearchCV(estimator = classifier, param_grid = parameters,refit= False, scoring='accuracy', cv=10)
gridsearch = gridsearch.fit(x,y)
optimal_accuracy = gridsearch.best_score_
optimal_parameters = gridsearch.best_params_
,那么您也会收到此错误。