gpt4 book ai didi

python - 使用 ctypes 加载 .dll

转载 作者:行者123 更新时间:2023-11-30 17:12:04 28 4
gpt4 key购买 nike

我有一个 .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/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com