我在将 DLL 链接到我的 Qt 项目的简单任务中遇到了很多麻烦。
我的步骤:
- 在 Qt 中,我转到“文件 -> 新文件或项目 -> 其他项目 -> C++ 库”
- 向mylibrary.h添加一个
calc
方法。 - 在mylibrary.cpp中实现该
calc
方法。 .a
我编译,然后转到.dll
创建文件的目录。- 我创建了一个新项目:“文件 -> 新文件或项目 -> Qt 小部件项目 -> Qt Gui 应用程序”
- 我将所有头文件从 MyLibrary 复制并粘贴到、
C:/Users/Me/includes
以及MyLibrary.dll
和。libMyLibrary.a
C:/Users/Me/
- 然后我进入我的 Qt Widget Project 的项目文件(步骤 5)。
我添加了包含路径以及 DLL 路径:
INCLUDEPATH += "C:/Users/Me/includes"
LIBS += "C:/Users/Me/MyLibrary.dll"
然后我进入我的mainwindow.cpp
,并输入以下代码:
#include "mainwindow.h"
#include "ui_mainwindow.h"
#include <QDebug>
#include "mylibrary.h"
MainWindow::MainWindow(QWidget *parent) :
QMainWindow(parent),
ui(new Ui::MainWindow)
{
ui->setupUi(this);
MyLibrary myLib;
qDebug() << myLib.calc();
}
MainWindow::~MainWindow()
{
delete ui;
}
当然,我得到未定义的错误:
C:\Users\Me\Desktop\TestInternals-Win\..\TestInternals\mainwindow.cpp:15: error: undefined reference to `_imp___ZN13MyLibrary4calcEv'
C:\Users\Me\Desktop\TestInternals-Win\..\TestInternals\mainwindow.cpp:15: error: undefined reference to `_imp___ZN13MyLibrary4calcEv'
:-1: error: collect2: ld returned 1 exit status
MyLibrary 文件内容
mylibrary.h内容:
#ifndef MYLIBRARY_H
#define MYLIBRARY_H
#include "MyLibrary_global.h"
class MYLIBRARYSHARED_EXPORT MyLibrary{
public:
MyLibrary();
int calc();
};
#endif // MYLIBRARY_H
mylibrary.cpp内容:
#include "mylibrary.h"
MyLibrary::MyLibrary()
{
}
int calc()
{
return 5;
}
我没有接触过Qt生成的MyLibrary_global.h文件
谢谢你的帮助。