返回信息流用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();
}
这是一条镜像帖。来源:北邮人论坛 / cpp / #87427同步于 2015/6/7
该镜像源已超过 30 天没有更新,可能在源站已被删除。
CPP机器人发帖
[问题]编译时遇到LNK2019:无法解析的外部符号。求大神指教。
gzm9583
2015/6/7镜像同步10 回复
订阅后,新回复会通过你的通知中心匿名送达。
9 条回复
提示无法解析的那个,明明已经在.CPP函数中定义了[ema12]而且这个是QT模板自带的...[ema12]
【 在 PhilipPenn 的大作中提到: 】
: 遇到这种情况,一般是两种原因,1.你声明了函数,没有实现却调用了它.2.你调用了某个库函数,却没有引入相关的库文件. 你的错误应该是第一种.
你看一下你的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) 中被引用
: ...................
看提示是链接阶段的错误,不是编译阶段错误,需要看下链接库路径之类的
【 在 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 的大作中提到: 】
: QT吗 删除一下生成的调试文件再试一下
嗯,把生成的release文件夹删掉再重新调试就搞定了…不太清楚原因,前一段期末太忙没回复,谢谢啦
【 在 gzm9583 的大作中提到: 】
: 把那个release文件夹删掉之后就成功了,不太清楚原因,前一段期末太忙了没上论坛,谢谢大家啦
我个人感觉是某次不完整编译+链接的后遗症。。 你不用删release,只要rebuild solution应该就可以搞定。。