gpt4 book ai didi

c++ - 简单的 QT 程序未编译 - 链接器/架构错误

转载 作者:太空宇宙 更新时间:2023-11-04 11:38:23 25 4
gpt4 key购买 nike

嘿,我有一个非常简单的 qt 程序,它似乎无法编译。我得到的错误是“找不到体系结构 x86_64 的符号”和“链接器命令失败,退出代码为 1(使用 -v 查看调用)”。 PS:我使用的是 mac os X 版本 10.9.2。我尝试将析构函数设为虚拟并将该类放在单独的头文件中。都没有用。

错误:

Undefined symbols for architecture x86_64:
"vtable for QQ", referenced from:
QQ::QQ(QWidget*) in main.o
NOTE: a missing vtable usually means the first non-inline virtual member function has no definition.
ld: symbol(s) not found for architecture x86_64
clang: error: linker command failed with exit code 1 (use -v to see invocation)
make: *** [Test.app/Contents/MacOS/Test] Error 1
14:42:46: The process "/usr/bin/make" exited with code 2.
Error while building/deploying project Test (kit: Desktop Qt 5.2.1 clang 64bit)
When executing step 'Make'

这是我的代码:

#include "qmainwindow.h"
#include <QApplication>
#include <QPushButton>
#include <QObject>
#include <iostream>
#include <QTextEdit>
#include <QVBoxLayout>

using namespace std;

class QQ: public QWidget{
Q_OBJECT
public:

explicit QQ(QWidget* parent = 0) { };
virtual ~QQ() { };
void print(){cout << value;};
public slots:
void changev(int n){value = 135;};
private:
int value;
};



int main(int argc, char *argv[]) {
QApplication app(argc, argv);

QMainWindow mw;

QQ* a = new QQ(&mw);
//QPushButton* qp = new QPushButton("here");
//QObject::connect(qp, SIGNAL(clicked()), a, SLOT(changev(9)));


return app.exec();
}

最佳答案

您的问题似乎源于Q_OBJECT 声明。在我的机器上,只需将 QQ 类移动到一个单独的头文件就可以了。请记住 make clean 并在将类移动到头文件后再次运行 qmake -projectqmake

有关详细信息,请参阅以下问题: Q_OBJECT throwing 'undefined reference to vtable' error

关于c++ - 简单的 QT 程序未编译 - 链接器/架构错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22364362/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com