解决QT加载dll失败问题

QT应用启动失败排查方法 打开QT Plugin加载调试开关, 会得到QT应用启动过程中更详细的错误信息。 阅读详情

1、dll源码如下(使用vs2015编译):

// 下列 ifdef 块是创建使从 DLL 导出更简单的
// 宏的标准方法。此 DLL 中的所有文件都是用命令行上定义的 SUM_EXPORTS
// 符号编译的。在使用此 DLL 的
// 任何其他项目上不应定义此符号。这样,源文件中包含此文件的任何其他项目都会将
// SUM_API 函数视为是从 DLL 导入的,而此 DLL 则将用此宏定义的
// 符号视为是被导出的。
#ifdef SUM_EXPORTS
#define SUM_API __declspec(dllexport)
#else
#define SUM_API __declspec(dllimport)
#endif

extern "C" SUM_API int fnSum(int a, int b);
// Sum.cpp : 定义 DLL 应用程序的导出函数。
//

//#include "stdafx.h"
#include "Sum.h"

// 这是导出函数的一个示例。
SUM_API int fnSum(int a, int b)
{
    return (a+b);
}

 2、QT加载方式如下(qt 5.6.3版本编译):

#include <QCoreApplication>
#include <QLibrary>
#include <QDebug>

typedef int (*FUNC)(int a, int b);
int main(int argc, char *argv[])
{
    QCoreApplication a(argc, argv);

    FUNC myFunc = (FUNC)QLibrary::resolve("Sum.dll", "fnSum");
    if (!myFunc)
    {
        qDebug()<<"Load dll failed!";
        return -1;
    }

    int ret = myFunc(1, 2);
    qDebug()<<"ret: "<<ret;

    return a.exec();
}

3、出现QT无法加载dll的问题,经调试发现是 vs多线程设置的问题,运行库改为MTd方式测试通过。

配置方法如下图:

 

 

WebView2避坑指南:QT5环境下DLL加载失败/白屏问题的7种解决方案 本文详细解析了在QT5环境中集成WebView2时常见的DLL加载失败和白屏问题,提供了7种实用解决方案。从环境配置到静态链接处理,再到企业级部署优化,帮助开发者高效解决WebView2与QT5的兼容性问题,提升应用稳定性与性能。 阅读详情

相关推荐

QT显式调用MFC动态库(DLL)方法(学习记录)

代码如下: //==================================================MFC================================================== void ShowTest() { AFX_MANAGE_STATE(AfxGetStaticModuleState());////需要加上.然调用带界面的MFC_DLL的话界面会显示. qTestDll dlg; dlg.DoModal();//界面调用 } //====

weixin_44813785的博客 2184

Ubuntu环境下解决Qt出现Qt平台插件“xcb”加载失败问题

首先,我们检查并安装了必要的依赖项,然后设置了正确的环境变量,并复制了所需的插件文件到应用程序的运行目录。在Ubuntu系统上使用Qt进行开发时,有时会遇到一个常见的错误消息:“qt.qpa.plugin: Could not load the Qt platform plugin ‘xcb’.” 这个错误通常意味着Qt无法加载所需的平台插件,导致应用程序无法正常工作。当我们在Ubuntu系统上使用Qt构建应用程序时,Qt会依赖一些特定的平台插件来实现与操作系统的交互。如果您有任何其他问题,请随时提问。

DevNinja的博客 4300

VS with Qt plugin 时,调试程序出现丢失Qt5Cored.dll的情况

环境Visual Studio 2015 (版本无所谓) Qt 5.6BUG 场景使用VS建立的QT项目,GIT提交到线上后,同事打开出现## 问题1:cmd.exe 编译通过处理方式 打开配置 切换成你本地的,比如 $(DefaultQtVersion); 保存 重新编译 ## 问题2调试就提示:丢失Qt5Cored.dll Qt5Widgetd.dll The program

编程/网络 6448

from PyQt5 import QtCore, QtGui, QtWidgetsImportError: DLL load failed while importing QtWidget

from PyQt5 import QtCore, QtGui, QtWidgetsImportError: DLL load failed while importing QtWidget

qq_53545309的博客 2613

QLibrary::load能正确加载dll,但加载dll的路径是正确的

windows平台: 为了提供可扩展功能,需要动态加载动态库,如果动态加载动态库采用到QtQLibrary类时: 在使用QLibraryload方法时,总是返回false。 通过errorString();方法获得的错误信息是 “找到***.dll” ,但查看dll的路径是正确的。 出现此问题的根本原因是:此dll所依赖的dll异常。 排查方法: 1、检查是否缺少

rach09的专栏 1万+

QLibrary load()失败load() “ error: Cannot load library xxx.dll: 找到指定的模块. “

" error: Cannot load library xxx.dll: 找到指定的模块. "

没用的阿吉 7296

dll加载问题

由于dll是动态加载加载失败的话,编译会通过,但程序会异常。比如qt中会出现程序窗口出现的问题加载失败一般是两个方面引起的 1.路径错了,编译器找到指定的dll 2.dll存在依赖 第二点比较隐蔽,我搞了一天才在qmake的环境下搞好,当一个dll中还依赖另外的dll时,就需要连接器自己去到相应的目录下去找,他很笨的,除了大家通用的目录之外会找其他目录,所以当出现这种情况时,要...

weixin_30550081的博客 208

Qt连接MySql驱动加载失败问题解决(报错:QSqlDatabase: QMYSQL driver not loaded)

qt连接上数据库在使用Qt连接mysql数据库的时候,遇到过这样的报错:这是qt能够加载数据库的驱动导致的。

galdglad的博客 3582

QT-MySQL QSqlDatabase: QMYSQL driver not loaded

看到有人会遇到这样的报错,提示没有mysql.h这个头文件,这个头文件在mysql安装目录下的include文件夹里,我并没有遇到这情况,所以也清楚具体是啥情况。看到大部分教程是将libmysql.dll复制到qt的编译器下的bin目录里就搞定了,但很多人试了没成功,那可能是因为,他们安装的qt的插件库里本身就有qsqlmysql.dll这样的插件。

2302_79752447的博客 1348

QT中调用共享库时加载库成功,加载库中函数时提示失败解决办法

问题说明:TranBaowenInfo.dll 是自己编写的动态链接库,库中导出函数名为GetTranslateInfo(),调试时一直提示加载库成功(ok dll),但是加载库中导出函数一直失败(shibai func)。 typedef bool (*getTranslateInfo)(Tran_ptCIR_Frame, QString, COLORREF, ...

康fi哥 2579

QT5构建执行各种dll问题解决

选择debug版本还是release版本 这个选择在QT的左下角 有个大大的按钮 如果有一个xxx.dll debug版本的dll名字对应的就是xxxd.dll dll路径一般在Qt/Qt5.9.9/5.9.9/msvc2017_64/bin中 msvc2017_64是和项目的工具包有关 出现 Can not load core plugin,Please check 的弹框报错 需要Qt5Network.dll 如果出现 it could not find or load the Qt platform.

summer的博客 1765

VC调用QTdll 问题解决

前提:QT写的界面,转换成VC可调用的dll问题1:编译通过,但出现dll装载句柄为NULL,GetLastError()返回126,代码如下: SetCurrentDirectory("E:\\"); //ABC.dll目录为E:\ABC. HMODULE handle = LoadLibrary("ABC.dll");  //ABC.dllQT生成的库 int m=0;

snowbird13的专栏 2697

海康威视SDK二次开发打包后提示加载ssleay32.dll失败解决方案

党的

woshigaowei5146的博客 2851

QT 自定义插件加载失败解决办法

QT可以使用自定义插件,具体的新建自定义插件以及如何引用插件的步骤,这个博文提供了详细步骤 https://www.cnblogs.com/georgeOfChina/p/7773141.html 这里主要记录下自己遇到的坑: 我按照博文的步骤自定义了自己的插件,但是新建工程时在designer界面始终显示出我的插件 点击“工具\Form Editor\About Qt Designer...

yhl_sophia的博客 7705

Qt 环境中调用DLL库的问题总结

之前安装了一个minGw版本的Qt creator。得到了一个.dll,. lib, .h.要在Qt中调用起来,过程中遇到如下问题:在开始时,发现在Qt中始终加载了这个动态库更无法使用其中的类。了解到这个动态链接库是c++写得,怀疑是编译器的原因,因为一直VS 都是使用的MSVC的编译器而Qt默认是minGW , 并且我安装的也是MinGW编译器版本的Qt creator 。最后做了如下调整:1...

青春 不留遗憾~ 2144

Qt5 编译MySQL驱动,仍然加载失败,出现QMYSQL driver not loaded

如图所示,已经提示支持MYSQL的驱动了,但是仍然加载上MYSQL的驱动   解决办法:将mysql安装目录下的lib目录中的libmysql.dll 动态库拷贝到D:\Qt\Qt5.1.0\5.1.0\mingw48_32\bin中     ,路径安装Qt的版本修改下就可以,我用的是5.1.0的版本   如果还报错,可以尝试将libmysql.dll文件拷贝到QtCreater的路

okhelp的专栏 1444

QML使用webkit加载网页报错解决方法 qml: Error creating SSL context ()

折腾了三天!!!!! QT简直是太坑爹了!!!!!! QML加载网页,用webkit,webview总是加载出来网页!!!!!! 最后打印了错误,发现是SSL对,看网上好多人说要重新安装OPENSSL,好复杂好复杂,最后发现就是QT运行时候缺少了两个dll!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! 我去,而且这两个库...

f1jiaziqing的专栏 1360

Qt6库加载失败?删除System32旧文件即可

所以无论我怎么更改环境变量windows都会首先加载System32中的旧文件,而这个文件支持Qt6.5.2需要的新指令,所以程序崩溃了。一种解决方法是使用Qt自带的windeploy.exe将所有需要用到的库打包进去,但是很麻烦,每次创建项目还需要手动打包。然后我又尝试使用别的办法,看到网上有说是环境变量的问题,我将环境变量重新配置之后还是会产生上述问题,一直显示无法定位程序输入点。今天需要用到Qt6但我只下载了Qt5,然后当我下载好Qt6并配置好编译器后一直报库加载失败问题。的 C++ 运行库。

m0_73297005的博客 340
上一篇: QT显式加载dll的方法
下一篇: isspace函数的debug版本处理中文字符时程序异常
cabinriver
博客等级 码龄18年 45粉丝 51原创
评论 3
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

cabinriver

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值