加载dll失败

Qt调用外部DLL失败:Python依赖解决方案
本文探讨了在Qt应用中使用第三方dll时遇到的加载问题,通过实例展示了如何通过安装Anaconda3和设置环境变量来解决因Python依赖引起的加载错误。重点在于正确配置环境以确保dll中的Python包可用。
部署运行你感兴趣的模型镜像

Qt系列文章目录

前言

加载dll失败,使用Dependencies.exe查看,感觉也没有缺失相关dll
在使用Qt中调用别人写的dll,一直加载失败。使用windeployqt.exe命令打包也总是失败
在这里插入图片描述

PS E:\osg\work\CARTDLL_demo_20220520\CallCartDll> D:\Qt\Qt5.12.9\5.12.9\msvc2017_64\bin\windeployqt.exe CallCartDll.exe
“CallCartDll.exe” does not exist.

PS E:\osg\work\CARTDLL_demo_20220520\CallCartDll> cd E:\osg\work\CARTDLL_demo_20220520\CallCartDll\debug
PS E:\osg\work\CARTDLL_demo_20220520\CallCartDll\debug> D:\Qt\Qt5.12.9\5.12.9\msvc2017_64\bin\windeployqt.exe CallCartDll.exe
E:\osg\work\CARTDLL_demo_20220520\CallCartDll\debug\CallCartDll.exe 64 bit, debug executable
E:\osg\work\CARTDLL_demo_20220520\CallCartDll\debug\CallCartDll.exe does not seem to be a Qt executable.
PS E:\osg\work\CARTDLL_demo_20220520\CallCartDll\debug>

二、解决办法

1.安装Anaconda3 版本-2021.05-Windows-x86_64
2.设置Anaconda3的环境变量
在这里插入图片描述

#include <QCoreApplication>
#include <iostream>
#include "windows.h"

using namespace std;
#pragma comment(lib,"CartDll.lib")
typedef double (*cartfun)(int *itype,int *katmod,int *ikaerosol,int *ikheight,float *iseah,float *ivis,float *irh,
                       float *wmintemp,float *wmaxtemp,float *avertrans,float *pathradiance, float *totalradiance);

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

    HINSTANCE hlib=LoadLibrary(TEXT("CartDll.dll"));
    if(!hlib)
    {
        cout<<"open dll error!"<<endl;
    }
    else
    {
        cout<<"open dll sucess!"<<endl;
    }

    cartfun cart1=(cartfun)GetProcAddress(hlib,"cart");
    if(!cart1)
    {
       cout<<"load CART FUN add error!"<<endl;
    }
    else
    {
        cout<<"load CART FUN add sucess!"<<endl;
    }

    int iType = 3;          //计算模式
    int iKatmod = 22;        //大气模式
    int iKaerosol = 1;      //气溶胶类型
    int iKheight = 0;       //气溶胶高度模式
    float fSeah = 0.0;        //地表海拔高度
    float fVis = 34.0;       //能见度
    float fRh = 65.0;         //相对湿度
    float fWmintemp = 400.0;  //计算起始波数
    float fWmaxtemp = 40000.0;   //计算截止波数

    float fAvertrans;
    float fTotalradiance;
    float pathradiance;
    cart1(&iType,&iKatmod,&iKaerosol,&iKheight,&fSeah,&fVis,&fRh,&fWmintemp,&fWmaxtemp,&fAvertrans,&pathradiance,&fTotalradiance);

    cout<<" fAvertrans = "<<fAvertrans<<endl;

    cout<<" fTotalradiance = "<<fTotalradiance<<endl;

     cout<<" pathradiance = "<<pathradiance<<endl;



     cout << "Hello World!" << endl;

     std::system("pause");

    return a.exec();
}

总结

原来别人写的dll中有用到python相关依赖包,所以要把Anaconda3的路径配置到环境变量中
在这里插入图片描述

您可能感兴趣的与本文相关的镜像

Python3.8

Python3.8

Conda
Python

Python 是一种高级、解释型、通用的编程语言,以其简洁易读的语法而闻名,适用于广泛的应用,包括Web开发、数据分析、人工智能和自动化脚本

<think> 我们正在讨论解决sdassistant加载dll失败的问题。根据引用内容,我们知道当出现SDDS.dll找不到时,通常是因为该dll文件在系统中缺失。虽然引用中提到了SDDS.dll,但用户现在遇到的是sdassistant加载dll失败,可能是不同的dll文件,但解决方法类似。 核心思路:缺失的dll文件需要被放回正确的目录(通常是系统目录或应用程序所在目录)。 步骤分解: 1. 确定缺失的dll文件名:在运行sdassistant时,错误消息会明确提示是哪个dll文件加载失败。用户需记录下这个dll文件名(例如,可能是SDDS.dll,也可能是其他名称)。 2. 下载正确的dll文件:根据缺失的dll文件名,从可靠的dll文件下载网站获取。注意选择与系统架构(32位或64位)以及操作系统版本匹配的版本。 3. 将dll文件放置到合适的位置: - 放到应用程序目录:即sdassistant.exe所在的文件夹。 - 放到系统目录:对于32位系统,通常是C:\Windows\System32;对于64位系统,32位dll应放在C:\Windows\SysWOW64,64位dll放在C:\Windows\System32。 4. 注册dll文件(可选):如果放置后仍然无法解决,可能需要以管理员身份运行命令提示符,执行`regsvr32 文件名.dll`来注册该dll。 5. 如果以上步骤无效,考虑重新安装应用程序或安装运行时库(如Visual C++ Redistributable)。 注意事项: - 下载dll文件时要小心,尽量选择可信的网站,避免下载到恶意软件。 - 有时,dll缺失可能是由于系统环境不完整,安装对应的运行时库可以解决。 因此,针对sdassistant加载dll失败的问题,我们首先需要明确具体缺失的dll文件名,然后按照上述步骤操作。 生成相关问题: 1. 如何确定缺失的dll文件的具体名称? 2. 下载dll文件时如何选择正确的版本(32位/64位)? 3. 如何注册dll文件? 4. 重新安装应用程序的步骤是什么? 5. 如何安装Visual C++ Redistributable? </think> ### 解决sdassistant加载DLL失败的方法 出现sdassistant加载DLL失败的问题,通常是由以下原因导致: 1. **关键DLL文件缺失**(如SDDS.dll或相关依赖文件) 2. **系统环境不完整**(缺少运行库) 3. **路径配置错误** 4. **软件安装损坏** #### 解决方案步骤: 1. **定位缺失的DLL文件** - 查看错误提示框显示的**具体DLL文件名**(如SDDS.dll、VCRUNTIME140.dll等) - 打开Windows事件查看器(`eventvwr.msc`)→ Windows日志→应用程序,查找错误详情[^1] 2. **修复运行环境** - 安装最新版[Visual C++ Redistributable](https://aka.ms/vs/17/release/vc_redist.x64.exe) - 更新.NET Framework(建议安装4.8版本) - 运行系统文件检查:`sfc /scannow` 3. **手动补充DLL文件** ```mermaid graph TD A[确定DLL名称] --> B[访问DLL下载站] B --> C{选择匹配版本} C -->|32位系统| D1[SysWOW64文件夹] C -->|64位系统| D2[System32文件夹] D1 --> E[注册DLL regsvr32] D2 --> E ``` - 推荐下载站:DLL-Files.com 或 Microsoft官方来源 - 放置位置优先级: 1. `sdassistant.exe`所在目录 2. `C:\Windows\System32`(64位系统) 3. `C:\Windows\SysWOW64`(32位系统) 4. **深度修复方案** - 使用Dependency Walker分析依赖链 - 下载地址:https://www.dependencywalker.com/ - 打开`sdassistant.exe`查看红色标记的缺失项 - 重建注册表关联:管理员CMD执行`assoc .dll= dllfile` 5. **终极解决方法** - 完全卸载sdassistant → 清理注册表(使用CCleaner) - 重新下载最新安装包 - 安装时**关闭杀毒软件**(避免误拦截) - 右键选择"以管理员身份运行" > ⚠️ 注意:从非官方来源下载DLL存在安全风险,建议优先通过安装Visual C++运行库解决[^1]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值