python - 使用 ctypes 加载 .dll

标签 python c gcc dll linker

我有一个 .dll 依赖于其他一些(日晷 ODE 求解器).dll。我使用 Windows 8.1 和 mingw 来编译和链接我用于 .dll 的 C 代码。当尝试使用Python和ctypes加载它们时,我收到一个弹出窗口,其中显示系统错误:找不到libsundials_cvode.dll,因为它在计算机上不存在,当您关闭弹出窗口时,Python会输出WindowsError: [Error 126] Cannot find the module 无法理解为什么会这样,因为 gcc 编译和链接文件没有错误(是的,它们确实存在)...我什至尝试复制将依赖的 dll 复制到我的 python 脚本所在的目录中,但没有成功。

我运行以下编译和链接器命令,没有任何警告或错误

gcc -c -I c:\sundials\include cfile.c
gcc -shared -o clib.dll cfile.o -L. C:\sundials\instdir\lib\libsundials_cvode.dll -L. C:\sundials\instdir\lib\libsundials_nserial.dll

我的Python测试脚本给出上述错误是

import ctypes
lib = ctypes.cdll.LoadLibrary('clib.dll')

我是 gcc 和 c 的初学者,但对 Python 非常有经验。有什么建议可能是什么原因吗?

最佳答案

参见维基百科 Dynamic-link library :

“...除非您的 DLL 是组件对象模型 (COM) 服务器,否则 DLL 文件必须放置在 PATH 环境变量中列出的目录之一、默认系统目录或与使用它的程序相同的目录...”

因此,将 C:\sundials\instdir\lib 添加到您的 PATH 环境中。变量。

关于python - 使用 ctypes 加载 .dll,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31835213/

相关文章:

c++ - GCC Segmentation Fault Mac

在 C 中将多个字节转换为文件大小

c - 了解程序中变量的多重声明和 GCC 编译器行为

c - clang/gcc是否优化密码变量清除功能

c - 旧 C 代码无法编译

python - 使用 Tweepy 获取推文时出错

python - 计算 Pandas 中第一个事件的第 n 天

python - Pandas Python - 按分组值获取值计数

python - 生成长期运行的格雷码

c - 如何从 C 程序输出主机的 IP 地址?