我试图调用另一个类书签的方法,但是当我构建我的程序时我总是收到LNK错误,我不明白为什么。LNK尝试继承时出现Qt错误?
mainwindow.obj:-1: error: LNK2019: unresolved external symbol "public: class QStringList __cdecl Bookmarks::getList(void)" ([email protected]@@[email protected]@XZ) referenced in function "private: void __cdecl MainWindow::on_save_book_clicked(void)" ([email protected]@@AEAAXXZ)
debug\WebBrowser.exe:-1: error: LNK1120: 1 unresolved externals
当然,第二个错误的存在是因为第一个错误,至少我知道的很多。
我宣布我的头,包括我想使用类:
#include "mainwindow.h"
#include "ui_mainwindow.h"
#include "bookmarks.h"
这是我想要使用的扩展槽:
void MainWindow::on_save_book_clicked()
{
Bookmarks *bm = new Bookmarks();
QStringList book = bm -> getList();
QFileDialog *fd = new QFileDialog;
QString fileName = fd -> getSaveFileName(this,
tr("Save Bookmarks"), "",
tr("Bookmarks (*.txt);;AllFiles (*)"));
if (fileName.isEmpty())
{
return;
}
else
{
QFile file(fileName);
if (!file.open(QIODevice::WriteOnly))
{
QMessageBox::information(this, tr("Unable to open file"), file.errorString());
}
return;
QDataStream out(&file);
out.setVersion(QDataStream::Qt_4_5);
out << bm;
}
}
我确定已经错误来自行:
QStringList book = bm -> getList();
当我评论它,我不再收到链接错误,虽然我没有一个线索是什么问题造成的。为什么是这样?
是在共享库中定义的Bookmark类吗?实际定义了getList()函数吗? – vahancho
如果不知道项目结构,链接器错误很难解决。你必须问自己,链接器是否可以访问'bookmarks.cpp'或'bookmarks.lib'(我想这就是它的名称),找出这个问题的好方法是调用另一个'Bookmarks'函数,看看是否作品。 –
你创建书签类后运行qmake吗? – UldisK