首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >ctypes的输入和输出参数

ctypes的输入和输出参数
EN

Stack Overflow用户
提问于 2011-08-23 02:35:04
回答 2查看 1.9K关注 0票数 0

我在使用python中的ctype访问dll中的fortran函数时遇到了格式化输入和输出参数的问题。我可以访问库和函数,但我在如何格式化参数上苦苦挣扎。

f90代码的开头为:

代码语言:javascript
运行
复制
subroutine DataSub (Data_input,da,db,dy)

    double precision, intent(in) :: Data_input(9)
    double precision, intent(out) :: da,db,dy

如何在ctype中定义这种情况的输入和输出参数?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2011-08-23 03:20:22

如下所示:

代码语言:javascript
运行
复制
from ctypes import *#just for brevity in this example
input = (c_double*9)()
input[0] = .....
da = c_double()
db = c_double()
dy = c_double()
dll.DataSub(byref(input), byref(da), byref(db), byref(dy))
票数 2
EN

Stack Overflow用户

发布于 2011-08-23 02:53:01

最有可能的是c_double,但是你不应该再使用“双精度”了。使用带有kind属性的real,最好还是使用Fortran中的ISO_C_Binding来提供类似C的接口。ISO_C_Binding还允许您按值而不是按引用传递参数。如果没有它,您将需要使用http://docs.python.org/library/ctypes.html#passing-pointers-or-passing-parameters-by-reference

John Reid提供了ISO_C_Binding的一些示例:http://www.fortran.bcs.org/2002/interop.htm

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/7151925

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档