error:LNK2001 LNK2019

本文探讨了排除代码错误后,导致程序出现问题的原因可能是由于链接的库不对应,例如将x64的工程链接到win32库,或者debug工程链接到release库等常见问题。
排除代码错误以后,导致原因可能如下:
1. 链接的库不对应,例如x64的工程链接win32库
2. 有些网上开源库debug工程只能对应debug库, release工程只能对应release库
在Qt中,`mainwindow.obj` 出现 `LNK2019` 错误通常表示链接器无法找到某些函数或符号的定义。以下是一些常见的解决办法: ### 1. 检查函数定义 确保在 `.cpp` 文件中对 `.h` 文件里声明的所有函数都进行了定义。例如,若报错提示找不到 `MainWindow::saveAs()` 函数的定义,就得在 `mainwindow.cpp` 中添加该函数的实现: ```cpp // mainwindow.h class MainWindow : public QMainWindow { Q_OBJECT public: bool saveAs(); // 其他代码... }; // mainwindow.cpp bool MainWindow::saveAs() { // 函数实现 return true; } ``` ### 2. 检查类的构造和析构函数 要保证类的构造函数和析构函数都有定义。比如报错显示找不到 `DataLogger` 的析构函数定义,就需要在 `DataLogger` 类的源文件里添加析构函数的实现: ```cpp // datalogger.h class DataLogger { public: ~DataLogger(); // 其他代码... }; // datalogger.cpp DataLogger::~DataLogger() { // 析构函数实现 } ``` ### 3. 检查静态函数定义 确保静态函数在类的源文件中有定义。例如报错找不到 `Qgis::releaseName()` 函数的定义,若这是一个静态函数,要保证它在相应的源文件中有实现: ```cpp // qgis.h class Qgis { public: static QString releaseName(); // 其他代码... }; // qgis.cpp QString Qgis::releaseName() { // 静态函数实现 return "Release Name"; } ``` ### 4. 检查元对象系统相关函数 对于元对象系统相关的函数,要保证它们在类的源文件中有定义。例如报错找不到 `MainWindow::do_cursorChanged()` 函数的定义,需要在 `mainwindow.cpp` 中添加该函数的实现: ```cpp // mainwindow.h class MainWindow : public QMainWindow { Q_OBJECT private: void do_cursorChanged(); // 其他代码... }; // mainwindow.cpp void MainWindow::do_cursorChanged() { // 函数实现 } ``` ### 5. 检查自定义类的构造函数 确保自定义类的构造函数有定义。例如报错找不到 `mynotedig` 类的构造函数定义,需要在 `mynotedig` 类的源文件里添加构造函数的实现: ```cpp // mynotedig.h class mynotedig : public QDialog { Q_OBJECT public: explicit mynotedig(QWidget *parent = nullptr); // 其他代码... }; // mynotedig.cpp mynotedig::mynotedig(QWidget *parent) : QDialog(parent) { // 构造函数实现 } ``` ### 6. 清理并重新构建项目 有时候构建缓存可能会引发问题,可以尝试清理项目并重新构建。在Qt Creator中,选择 `Build` -> `Clean All`,然后再选择 `Build` -> `Rebuild All`。 ### 7. 检查库文件 若错误涉及到外部库的符号,要确保已正确链接这些库。在 `.pro` 文件中添加相应的库链接语句,例如: ```makefile LIBS += -L/path/to/library -lmylibrary ``` ### 8. 检查头文件包含路径 确保所有必要的头文件都被正确包含,并且包含路径无误。在 `.pro` 文件中可以添加包含路径: ```makefile INCLUDEPATH += /path/to/include ```
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值