C++ Qt应用程序在链接使用Qt创建的DLL时崩溃

C++ Qt应用程序在链接使用Qt创建的DLL时崩溃,c++,qt,dll,C++,Qt,Dll,在提出问题之前,我想告诉大家,我已经在这里彻底地寻找了答案。他们似乎都没有解决我的问题。 问题: 我已经创建了一个简单的C++ DLL文件,在使用了QT之后,给出了问题,虽然问题是DLL被创建,我已经把它链接到我的QT小部件应用程序,但是应用程序崩溃了,创建了文件的对象。 这里我发布了源代码和qdebug输出 libraray Qt pro QT += core gui widgets TARGET = myLib TEMPLATE = lib DEFINES += MYLIB_

在提出问题之前,我想告诉大家,我已经在这里彻底地寻找了答案。他们似乎都没有解决我的问题。 问题: 我已经创建了一个简单的C++ DLL文件,在使用了QT之后,给出了问题,虽然问题是DLL被创建,我已经把它链接到我的QT小部件应用程序,但是应用程序崩溃了,创建了文件的对象。 这里我发布了源代码和qdebug输出

libraray Qt pro

QT       += core gui widgets

TARGET = myLib
TEMPLATE = lib

DEFINES += MYLIB_LIBRARY

DEFINES += QT_DEPRECATED_WARNINGS

SOURCES += \
        mylib.cpp

HEADERS += \
        mylib.h \
        mylib_global.h 

unix {
    target.path = /usr/lib
    INSTALLS += target
}
mylib.h

#ifndef MYLIB_H
#define MYLIB_H

#include "mylib_global.h"

class MYLIBSHARED_EXPORT MyLib
{

public:
   MyLib();

   int add(int x, int y);
   int sub(int x, int y);

};

#endif // MYLIB_H
mylib_global.h

#ifndef MYLIB_GLOBAL_H
#define MYLIB_GLOBAL_H
#include <QtCore/qglobal.h>
#if defined(MYLIB_LIBRARY)
#  define MYLIBSHARED_EXPORT Q_DECL_EXPORT
#else
#  define MYLIBSHARED_EXPORT Q_DECL_IMPORT
#endif
#endif // MYLIB_GLOBAL_H
mainwindow.cpp

#include "mainwindow.h"
#include "ui_mainwindow.h"
#include"mylib.h"

MainWindow::MainWindow(QWidget *parent) :
    QMainWindow(parent),
ui(new Ui::MainWindow)
{
    ui->setupUi(this);

    MyLib lib;
    lib.add(1,2); 
}

MainWindow::~MainWindow()
{
    delete ui;
}
现在是应用程序输出
D:\Gurushant\My Other Side Projects\Making dll Files\build-myWidgetApp-Desktop\u Qt\u 5\u 9\u 1\u MinGW\u 32bit-Release\Release\myWidgetApp.exe
崩溃


我正在使用Windows7 Professional和Qt5.9.1,到目前为止,在做了大量的尝试和错误之后,最好的方法是

INCLUDEPATH += (Your_Path)
DEPENDPATH += (Your Path)

(if your target path is win32)
win32:CONFIG(release, debug|release): LIBS += -L(path) -l(lib_file_without_dot_dll)
  • 不要在-L之后使用空格

复制可执行文件旁边的
myLib.dll
并重试如果路径包含空格,最好使用“添加库”对话框添加外部库,只需右键单击你的.pro文件并选择“添加库”,你是否通过Dependency Walker运行它以查看是否缺少任何其他DLL?@saeed i tred that dintwork@saeed我还尝试将图书馆保持在这样一条路径上,即不包含空间,但它无法工作
#include "mainwindow.h"
#include "ui_mainwindow.h"
#include"mylib.h"

MainWindow::MainWindow(QWidget *parent) :
    QMainWindow(parent),
ui(new Ui::MainWindow)
{
    ui->setupUi(this);

    MyLib lib;
    lib.add(1,2); 
}

MainWindow::~MainWindow()
{
    delete ui;
}
INCLUDEPATH += (Your_Path)
DEPENDPATH += (Your Path)

(if your target path is win32)
win32:CONFIG(release, debug|release): LIBS += -L(path) -l(lib_file_without_dot_dll)