找回密码
 立即注册
收起左侧

qt5.12,qt5.8调用同一个vc的DLL一个失败,一个成功为什么??

6
回复
5012
查看
[复制链接]
累计签到:1 天
连续签到:1 天
来源: 2019-3-3 20:49:54 显示全部楼层 |阅读模式
1Qter豆
qt5.12,qt5.8调用同一个vc的DLL一个失败,一个成功为什么??

代码如下,之前用5.8是可以的,现在用5.12 怎么就不行呢???


typedef void(*lpFun)(void);

    QLibrary dll("myvcc.dll");

    if (dll.load()) {
        qDebug() << "load ok!";
    } else {
        qDebug() << "load failed!";
    }

    lpFun setBDDevParaDlg = (lpFun)dll.resolve("setDevParaDlg");

回复

使用道具 举报

累计签到:955 天
连续签到:1 天
2019-3-4 09:16:26 显示全部楼层
这个不好判断,应该还是路径或者dll没找到的问题
回复

使用道具 举报

累计签到:742 天
连续签到:1 天
2019-3-4 09:51:40 显示全部楼层
是这个样子的,Qt 5.8 用的是 冥狗 32,但是新出的 Qt 5.12 变为了 冥狗 64 了,你的库文件很有可能是 32 位的,不适用于 64 位的编译器 ~
回复

使用道具 举报

累计签到:1 天
连续签到:1 天
2019-3-4 13:57:38 显示全部楼层
@Since 很可能是这个原因怎么破呢?难道不能升级了吗?
回复

使用道具 举报

累计签到:1 天
连续签到:1 天
2019-3-4 16:27:53 显示全部楼层
同为qt,似乎5.12 版都不能调用5.8版的dll
回复

使用道具 举报

累计签到:742 天
连续签到:1 天
2019-3-4 19:16:45 显示全部楼层
这个的办法就是,如果你有这个库的源代码,并且代码可以在 64 位下编译,你就用 12 上编译一次,哪些不兼容,改过来,只有这个办法了,如果没有源代码,我也木的办法,一个库不可能兼容所有 编译器,新的 Qt 的一些特性很可能依赖 64 位的编译器,所以,只能你去适应新环境了 ~
回复

使用道具 举报

尚未签到

2019-10-15 10:45:13 显示全部楼层
不用这么麻烦吧,你下载一个32位的MSVC的编译器编译不就行了,或者你用32位的冥狗编译不就行了
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

公告
可以关注我们的微信公众号yafeilinux_friends获取最新动态,或者加入QQ会员群进行交流:190741849、186601429(已满) 我知道了