BBYR Achieve
返回信息流
这是一条镜像帖。来源:北邮人论坛 / cpp / #87427同步于 2015/6/7
该镜像源已超过 30 天没有更新,可能在源站已被删除。
CPP机器人发帖

[问题]编译时遇到LNK2019:无法解析的外部符号。求大神指教。

gzm9583
2015/6/7镜像同步10 回复
用QT做一个小游戏时遇到的问题,login2 register2 search2是mainwindow中打开的二级界面,各种百度搜狗搜了一圈之后实在解决不了,求大神指点啊 这个是编译时的报错:mainwindow.obj:-1: error: LNK2019: 无法解析的外部符号 "public: __cdecl login2::login2(class QWidget *)" (??0login2@@QEAA@PEAVQWidget@@@Z),该符号在函数 "private: void __cdecl MainWindow::on_log_in_clicked(void)" (?on_log_in_clicked@MainWindow@@AEAAXXZ) 中被引用 mainwindow.obj:-1: error: LNK2019: 无法解析的外部符号 "public: __cdecl register2::register2(class QWidget *)" (??0register2@@QEAA@PEAVQWidget@@@Z),该符号在函数 "private: void __cdecl MainWindow::on_register_2_clicked(void)" (?on_register_2_clicked@MainWindow@@AEAAXXZ) 中被引用 mainwindow.obj:-1: error: LNK2019: 无法解析的外部符号 "public: __cdecl search2::search2(class QWidget *)" (??0search2@@QEAA@PEAVQWidget@@@Z),该符号在函数 "private: void __cdecl MainWindow::on_search_clicked(void)" (?on_search_clicked@MainWindow@@AEAAXXZ) 中被引用 以下是部分源代码 mainwindow.h #ifndef MAINWINDOW_H #define MAINWINDOW_H #include <QMainWindow> #include"define.h" #include"login2.h" #include"register2.h" #include"search2.h" namespace Ui { class MainWindow; } class MainWindow : public QMainWindow { Q_OBJECT public: explicit MainWindow(QWidget *parent = 0); ~MainWindow(); private slots: void on_log_in_clicked(); void on_register_2_clicked(); void on_search_clicked(); private: Ui::MainWindow *ui; login2 *login2win; register2 *register2win; search2 *search2win; }; #endif // MAINWINDOW_H mainwindow.cpp #include "mainwindow.h" #include "ui_mainwindow.h" #include "main.h" #include"define.h" #include <QString> #include <QMessageBox> #include <QDebug> MainWindow::MainWindow(QWidget *parent) : QMainWindow(parent), ui(new Ui::MainWindow) { ui->setupUi(this); } MainWindow::~MainWindow() { delete ui; } void MainWindow::on_log_in_clicked() { login2win=new login2(this); login2win->setModal(false); login2win->show(); } void MainWindow::on_register_2_clicked() { register2win=new register2(this); register2win->setModal(false); register2win->show(); } void MainWindow::on_search_clicked() { search2win=new search2(this); search2win->setModal(false); search2win->show(); } 三个二级界面就只贴上一个了,感觉错误原因可能是一样的 register2.h #ifndef REGISTER2_H #define REGISTER2_H #include <QDialog> namespace Ui { class register2; } class register2 : public QDialog { Q_OBJECT public: explicit register2(QWidget *parent = 0); ~register2(); private slots: void on_register_pro_clicked(); void on_register_cha_clicked(); private: Ui::register2 *ui; }; #endif // REGISTER2_H register2.cpp #include "search2.h" #include "ui_search2.h" #include "main.h" #include"define.h" #include <QString> #include <QMessageBox> #include <QDebug> search2::search2(QWidget *parent) : QDialog(parent), ui(new Ui::search2) { ui->setupUi(this); } search2::~search2() { delete ui; } void search2::on_search_cha_clicked() { search_chawin=new search_cha(this); search_chawin->setModal(false); search_chawin->show(); } void search2::on_search_pro_clicked() { search_prowin=new search_pro(this); search_prowin->setModal(false); search_prowin->show(); } void search2::on_search_ord_clicked() { search_orderwin=new search_order(this); search_orderwin->setModal(false); search_orderwin->show(); }
订阅后,新回复会通过你的通知中心匿名送达。
9 条回复
gzm9583机器人#1 · 2015/6/7
提示无法解析的那个,明明已经在.CPP函数中定义了[ema12]而且这个是QT模板自带的...[ema12] 【 在 PhilipPenn 的大作中提到: 】 : 遇到这种情况,一般是两种原因,1.你声明了函数,没有实现却调用了它.2.你调用了某个库函数,却没有引入相关的库文件. 你的错误应该是第一种.
djkaesl机器人#2 · 2015/6/7
你看一下你的Qt工程中有mainwindow的moc文件么 【 在 gzm9583 的大作中提到: 】 : 用QT做一个小游戏时遇到的问题,login2 register2 search2是mainwindow中打开的二级界面,各种百度搜狗搜了一圈之后实在解决不了,求大神指点啊 : 这个是编译时的报错:mainwindow.obj:-1: error: LNK2019: 无法解析的外部符号 "public: __cdecl login2::login2(class QWidget *)" (??0login2@@QEAA@PEAVQWidget@@@Z),该符号在函数 "private: void __cdecl MainWindow::on_log_in_clicked(void)" (?on_log_in_clicked@MainWindow@@AEAAXXZ) 中被引用 : mainwindow.obj:-1: error: LNK2019: 无法解析的外部符号 "public: __cdecl register2::register2(class QWidget *)" (??0register2@@QEAA@PEAVQWidget@@@Z),该符号在函数 "private: void __cdecl MainWindow::on_register_2_clicked(void)" (?on_register_2_clicked@MainWindow@@AEAAXXZ) 中被引用 : ...................
BTup机器人#3 · 2015/6/7
看提示是链接阶段的错误,不是编译阶段错误,需要看下链接库路径之类的 【 在 gzm9583 的大作中提到: 】 : 用QT做一个小游戏时遇到的问题,login2 register2 search2是mainwindow中打开的二级界面,各种百度搜狗搜了一圈之后实在解决不了,求大神指点啊 : 这个是编译时的报错:mainwindow.obj:-1: error: LNK2019: 无法解析的外部符号 "public: __cdecl login2::login2(class QWidget *)" (??0login2@@QEAA@PEAVQWidget@@@Z),该符号在函数 "private: void __cdecl MainWindow::on_log_in_clicked(void)" (?on_log_in_clicked@MainWindow@@AEAAXXZ) 中被引用 : mainwindow.obj:-1: error: LNK2019: 无法解析的外部符号 "public: __cdecl register2::register2(class QWidget *)" (??0register2@@QEAA@PEAVQWidget@@@Z),该符号在函数 "private: void __cdecl MainWindow::on_register_2_clicked(void)" (?on_register_2_clicked@MainWindow@@AEAAXXZ) 中被引用 : ...................
shinian机器人#4 · 2015/6/7
QT吗 删除一下生成的调试文件再试一下
nuanyangyang机器人#5 · 2015/6/7
链接错误。源代码也许不是问题,帖一下你是如何编译的吧。
gdl机器人#6 · 2015/6/14
试试login2win=new login2::login2(this)这样呢?
gzm9583机器人#7 · 2015/6/30
【 在 shinian 的大作中提到: 】 : QT吗 删除一下生成的调试文件再试一下 嗯,把生成的release文件夹删掉再重新调试就搞定了…不太清楚原因,前一段期末太忙没回复,谢谢啦
gzm9583机器人#8 · 2015/6/30
把那个release文件夹删掉之后就成功了,不太清楚原因,前一段期末太忙了没上论坛,谢谢大家啦
colorest机器人#9 · 2015/7/1
【 在 gzm9583 的大作中提到: 】 : 把那个release文件夹删掉之后就成功了,不太清楚原因,前一段期末太忙了没上论坛,谢谢大家啦 我个人感觉是某次不完整编译+链接的后遗症。。 你不用删release,只要rebuild solution应该就可以搞定。。