同一环境下一个项目可加载DLL另一个失败的排查求助
DLL加载失败排查建议
问题场景
在项目中通过以下代码加载DLL:
import ctypes dll_path = r'C:\path_to_dll' lib = ctypes.cdll.LoadLibrary(dll_path)
出现如下错误:
FileNotFoundError: Could not find module 'C:\Users\ws0734\source\repos\c-gurobi-matlab\C_dll_project\C_dll_project\x64\Release\Cdllproject.dll' (or one of its dependencies). Try using the full path with constructor syntax.
同一DLL在另一个项目可正常加载,两者共用Anaconda环境、VSCode设置,环境变量无差异,仅工作目录不同。
排查建议
- 检查DLL依赖项:用VS自带的
dumpbin /dependents "你的DLL完整路径"命令(需打开VS命令提示符)查看该DLL的所有依赖库。若成功加载的项目工作目录下包含某些依赖库,当前项目工作目录缺失这些文件就会导致加载失败。 - 临时添加依赖路径到PATH:在加载DLL前,把依赖库所在目录添加到系统
PATH中,示例代码:import os os.environ['PATH'] += os.pathsep + r'依赖库所在的目录路径' - 切换调用约定加载方式:部分DLL遵循stdcall调用约定,
cdll适用于cdecl约定,换用WinDLL尝试加载:lib = ctypes.WinDLL(dll_path) - 临时切换工作目录:尝试在加载DLL前切换到成功项目的工作目录,验证是否是工作目录导致的依赖或配置读取问题:
import os os.chdir(r'成功加载DLL的项目工作目录') lib = ctypes.cdll.LoadLibrary(dll_path) - 验证DLL文件一致性:确认两个项目加载的是同一个DLL文件,检查文件大小、修改时间是否完全一致,避免误引用不同版本的文件。
内容的提问来源于stack exchange,提问作者Christian
相关产品推荐
相关产品推荐

