python调用fortran dll_使用cffi从python调用fortran dll

本文介绍了作者在Windows环境下使用Python 3.6.5和cffi库尝试调用Fortran编译的DLL文件S01BAF函数时遇到的问题及解决过程。尽管cffi能够成功加载和识别函数,但在实际调用时出现错误。作者通过VBA验证了DLL函数本身的正确性,并最终找到了问题的解决方案。
摘要由CSDN通过智能技术生成

我目前正在开发一个模拟工具,它需要一个来自fortrandll的PDE解算器。为了弄清楚如何从python调用dll,我从同一个dll中使用了一个更简单的函数,但无法使其工作。在

系统规格:

Windows 7专业版(64位)

斯派德3.2.8

Python 3.6.5(32位)

我现在使用cffi调用fortran函数,但它也不起作用。在import cffi as cf

ffi=cf.FFI()

lib=ffi.dlopen("C:\Windows\SysWOW64\DLL20DDS")

ffi.cdef("""

double S01BAF(double X, int IFAIL);

""")

print (lib) #This works

print (lib.S01BAF) #This works

x = 1.

ifail = 0

print (lib.S01BAF(x,ifail)) #This doesn't work

这是我用cffi调用函数的代码。我正在加载的dll包含我要调用的函数S01BAF。

我收到的错误消息是:

^{pr2}$

我不知道那是什么意思。在

为了检查函数本身是否正常工作,我尝试从另一种语言(VBA)调用它,它工作得很好。在Option Base 1

Option Explicit

Private Declare Function S01BAF Lib "DLL20DDS.dll" (x As Double, iFail As Long) As D

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值