找不到架构x86_64 mac os 10.13.3的符号

时间:2018-03-23 15:46:43

标签: c++ macos qt compiler-errors

我知道这个问题已经被问了好几千次,但我尝试了所有的解决方案而没有任何帮助。

我在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();
}

我希望你能帮助我。我正在处理这个错误一个多星期了。 如果您需要更多信息,请随时提出,我会发布。

2 个答案:

答案 0 :(得分:2)

  

未找到架构x86_64

的符号
MacOS上的

通常不难诊断,通常它来自你在标题中定义但没有正确实现的东西!

要知道为什么你在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_ ,那么您也会收到此错误。