首页 > 解决方案 > Qt 库问题:无法将我创建的动态库链接到项目

问题描述

我从 qt creator 创建了一个 c++ 动态库。当我尝试在 qwidget 应用程序中实现它进行测试时。我得到一些错误。包含和库路径必须全部正确。因为我有 .a 文件 qt 需要并且包含路径也是正确的。

我项目的 .pro 文件是;


QT += core gui multimedia

greaterThan(QT_MAJOR_VERSION, 4): QT += widgets

TARGET = testlib2
TEMPLATE = app

DEFINES += QT_DEPRECATED_WARNINGS

#DEFINES += QT_DISABLE_DEPRECATED_BEFORE=0x060000 # disables all the APIs deprecated before Qt 6.0.0

CONFIG += c++11

SOURCES += 
main.cpp 
mainwindow.cpp

HEADERS += 
mainwindow.h

FORMS += 
mainwindow.ui

Default rules for deployment.
qnx: target.path = /tmp/$${TARGET}/bin
else: unix:!android: target.path = /opt/$${TARGET}/bin
!isEmpty(target.path): INSTALLS += target

unix|win32: LIBS += -L$$PWD/../build-tonegenlib-Desktop_Qt_5_12_1_MinGW_64_bit-Debug/debug/ -ltonegenlib

INCLUDEPATH += $$PWD/../tonegenlib
DEPENDPATH += $$PWD/../tonegenlib

编译错误是这样的;

debug/mainwindow.o: In function MainWindow::MainWindow(QWidget*)': C:\QT_workspace\build-testlib2-Desktop_Qt_5_12_1_MinGW_64_bit-Debug/../testlib2/mainwindow.cpp:6: undefined reference to__imp__ZN10TonegenlibC1Ev'
collect2.exe: error: ld returned 1 exit status
mingw32-make[1]: *** [Makefile.Debug:69: debug/testlib2.exe] Error 1
mingw32-make: *** [Makefile:38: debug] Error 2
mingw32-make[1]: Leaving directory 'C:/QT_workspace/build-testlib2-Desktop_Qt_5_12_1_MinGW_64_bit-Debug'
01:29:22: The process "C:\Qt\Qt5.12.1\Tools\mingw730_64\bin\mingw32-make.exe" exited with code 2.
Error while building/deploying project testlib2 (kit: Desktop Qt 5.12.1 MinGW 64-bit)
When executing step "Make"
01:29:22: Elapsed time: 00:01.

这是项目的头文件;


#include <QMainWindow>
#include <tonegenlib.h>

namespace Ui {
class MainWindow;
}

class MainWindow : public QMainWindow
{
Q_OBJECT

public:
explicit MainWindow(QWidget *parent = nullptr);
~MainWindow();

Tonegenlib tonegen;



void test();
private:
Ui::MainWindow *ui;
};

这是.cpp


void MainWindow::test()
{
tonegen.m_freq = 240;
tonegen.playAudio();

}

当我添加库并在没有关于库的代码的情况下构建项目时,它会毫无错误地编译它。但是当我尝试调用一个函数时它会中断。非常感谢你的帮助

标签: qtdll

解决方案


推荐阅读