我有一个.dll与其他一些(Sundials ODE解算器).dll的依赖关系。我使用windows 8.1 with mingw来编译和链接我用于我的.dll的c代码。当尝试使用Python和ctypes加载它时,我得到一个带有System error: cannot find libsundials_cvode.dll since it does not exist on the computer
的弹出窗口,当你关闭弹出窗口时,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非常有经验。有什么建议可能是什么原因?
答案 0 :(得分:0)
参见维基百科Dynamic-link library:
“...除非您的DLL是组件对象模型(COM)服务器,否则DLL文件必须放在PATH环境变量,默认系统目录或与使用它的程序相同的目录...“
因此,将C:\sundials\instdir\lib
添加到您的PATH环境中。变量