首页 > 编程语言 >尽管依赖行者未找到任何缺失的依赖项,但在尝试使用 Ctypes 加载 DLL 时仍出现 FileNotFoundError(文件未找到错误

尽管依赖行者未找到任何缺失的依赖项,但在尝试使用 Ctypes 加载 DLL 时仍出现 FileNotFoundError(文件未找到错误

时间:2024-05-29 23:15:35浏览次数:29  
标签:python ctypes

答案:设置winmode=0

我是第一次使用 ctypes,因此在尝试真正实现它之前先玩了一下。但是,我无法使用 ctypes.CDLL() 加载我编译的 DLL,因为它会抛出 FileNotFoundError。

这是完整的错误信息:

FileNotFoundError:无法找到模块 'E:\absolute\path\to.dll' (或其依赖项之一)。请尝试使用带有构造函数语法的完整路径。

我确信该文件存在于该位置。

在查找过程中,有人建议我使用 Dependency Walker 来跟踪任何可能尚未编译的依赖项,但是当我使用它时,它只标记了 Windows API 的内容(根据 Google 的说法,这很正常? 我使用的是 Windows 10 系统),而没有标记其他内容。我认为这是有道理的,因为这是 C++ 代码的全部内容:

#include <string>;
#include <cstring>;

使用 namespace std;

extern "C" {
    const char* formatIntegerMessage(int num) {
        // 代码实现
    }
}
下面是我尝试使用它的 python 代码

import ctypes

lib = ctypes.CDLL("C:/absolute/path/to.dll") # 抛出 FileNotFoundError

# 更多代码

我还尝试添加 from ctypes import * 并使用 ctypes.WinDLL() 代替 CDLL ,但每次都会抛出相同的错误。

我确信我犯了一个明显的错误,但我在网上找不到任何相关信息。如果能得到任何帮助,我将不胜感激!


您遇到的错误可能是由于 DLL 的名称中包含一个点 (.)。虽然您的文件资源管理器可能不会显示它,但 DLL 文件的完整名称可能包括一个扩展名,例如“to.dll.dll”。

尝试以下解决方案:

  1. 重命名 DLL 文件: 最简单的解决方案是重命名 DLL 文件,删除名称中的额外点。例如,将“to.dll”重命名为“todll.dll”。然后,更新 Python 代码以使用新的文件名。

  2. 指定完整的文件名(包括扩展名): 您可以尝试在 Python 代码中指定 DLL 文件的完整文件名,包括扩展名。例如:

lib = ctypes.CDLL("C:/absolute/path/to.dll.dll") 
  1. 使用 os.path.abspath 获取绝对路径: 为了确保路径没有问题,您可以使用 os.path.abspath 函数获取 DLL 文件的绝对路径:
import ctypes
import os

dll_path = os.path.abspath("C:/absolute/path/to.dll")
lib = ctypes.CDLL(dll_path)

如果这些方法都不起作用,请提供以下信息,以便我能够更好地帮助您:

  • DLL 的完整文件名,包括扩展名。
  • 您用来编译 DLL 的编译器编译选项
  • 您的 Python 版本

标签:python,ctypes
From: 78548128

相关文章

  • Unleashing Robotics: Mastering Quaternion Kinematics with Python - Chapter7(原创
    UnleashingRobotics:MasteringQuaternionKinematicswithPython-Chapter7(原创系列教程)本系列教程禁止转载,主要是为了有不同见解的同学可以方便联系我,我的邮箱[email protected].使用截断级数的近似方法在状态估计问题中,我们通常使用一个称为状态转移矩阵......
  • 【python007】读取csv文件url多进程下载图片数据(最近更新中)
    1.熟悉、梳理、总结项目研发实战中的Python开发日常使用中的问题、知识点等2.欢迎点赞、关注、批评、指正,互三走起来,小手动起来!3.欢迎点赞、关注、批评、指正,互三走起来,小手动起来!4.欢迎点赞、关注、批评、指正,互三走起来,小手动起来!......
  • python基础 - 异常与日志
    异常----异常1:try:print(1/0)#try里放的是被检测的语句块exceptZeroDivisionErrorase:#处理异常的语句块print('除数不能为0')#自定义的异常print(e)#系统自带的异常----异常2:try:num=int(input('请输入一个数:‘))print(1/num)exceptZeroDivisionError:print(‘除数不能......
  • python基础 - 模块与包
    模块与包import包名.模块名importdemo.demo#前缀比较长,一般推荐from包名import模块名demo.demo.fun1(2)fromdemoimportdemodemo.fun1(3)fromdemo.demoimportfun1fun1(4)标准路径标准路径>当前路径>项目路径>其他标准路径importsysforoneinsy.path:pr......
  • 使用python绘制一个五颜六色的爱心
    使用python绘制一个五颜六色的爱心介绍效果代码介绍使用numpy与matplotlib绘制一个七彩爱心!效果代码importnumpyasnpimportmatplotlib.pyplotasplt#Heartshapefunctiondefheart_shape(t):x=16*np.sin(t)**3y=13*np.cos(t)-5*......
  • Python面向对象基础
    一、前言其实自己一直都觉得自己的编程代码能力是很垃圾的,事实也的确如此,算法算法不会,开发开发不会...今天和同学交流了一些代码。发现果然自己真的很菜啊。那就巩固一下基础吧.很久没碰,这都全忘了呀。二、类和对象什么是类,什么是对象。对象是类定义来的,类是无实际数据的。就是......
  • 20231325 贾罗祁 《Python程序设计》实验四报告
    20231325贾罗祁2023-2024-2《Python程序设计》实验四报告课程:《Python程序设计》班级:2313姓名:贾罗祁学号:20231325实验教师:王志强实验日期:2024年5月15日必修/选修:公选课1.实验内容Python综合应用:爬虫、数据处理、可视化、机器学习、神经网络、游戏、网络安全等。课......
  • 【leetcode——栈的题目】——1003. 检查替换后的词是否有效python
    题目:给你一个字符串 s ,请你判断它是否 有效 。字符串 s 有效 需要满足:假设开始有一个空字符串 t="" ,你可以执行 任意次 下述操作将 t 转换为 s :将字符串 "abc" 插入到 t 中的任意位置。形式上,t 变为 tleft+"abc"+tright,其中 t==tleft+trigh......
  • 清华大学出版,最适合Python小白的零基础入门教程!
    伴随着云计算、大数据、AI等技术的迅速崛起,市场对Python人才的需求和市场人才的匮乏,让长期沉默的Python语言一下子备受众人的关注,再加上简单易学,使得Python一跃成为TIOBE排行榜的第一。准备学Python或者想学Python的小伙伴们可能还不晓得,Python2.x已经停止更新了,而且Python......
  • 开山之作!Python数据与算法分析手册,登顶GitHub!
    若把编写代码比作行军打仗,那么要想称霸沙场,不能仅靠手中的利刃,还需深谙兵法。Python是一把利刃,数据结构与算法则是兵法。只有熟读兵法,才能使利刃所向披靡。只有洞彻数据结构与算法,才能真正精通Python今天给小伙伴们分享的这份手册,是用Python描述数据结构与算法的开山之作,透彻......