QLibrary的load失败(0x000000c1)

前言

        用vs加载dll库是没有问题,移植到qt creator开发却加载失败。

#include <QLibrary>

void LoadDll()
{
    QString appPath = QCoreApplication::applicationDirPath();
    QString strLibFile = appPath + "/Pay.dll";
    QLibrary *m_pLib= nullptr;

    if (QFile::exists(strLibFile))
        m_pLib = new QLibrary(strLibFile);
    else
        qDebug() << strLibFile + " isn't exists!";

    if(!m_pLib->load())
        qDebug() << "load fail:" + m_pLib->errorString();
    else
        qDebug() << strLibFile + " load success";
}

运行时候报错:

反思:其实代码没啥问题,vs项目也是正常使用的,后面,发现这个动态库是32位的,这个项目是64位的。最终把项目换成32位就成功了。

  总结:

因为一开始编译的dll是32位,但是64位进程直接调用32位DLL是会失败的,所以加载不成功,反过来,32位的进程去调用64位的DLL一样会失败,只有都统一起来以后才没问题了。

在没有dll源码的情况下,没法重新编译,这个时候就需要突破32位和64位之间调用的问题了,关于这个问题,可以参考这个:

64位进程调用32位DLL详解

  • 8
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值