【发布时间】:2017-12-05 22:45:23
【问题描述】:
我目前正在尝试将字符串传递给 Fortran 库。我已经从这个库中得到了其他函数来工作,但是这个特定的函数似乎是独一无二的,因为它希望将一个字符串作为函数的参数传递给它。
看源码,函数需要三个参数
SUBROUTINE EZVOLLIB(VOLEQI,DBHOB,HTTOT,VOL)
并且定义了参数:
IMPLICIT NONE
CHARACTER*(*) VOLEQI
CHARACTER*10 VOLEQ
REAL DBHOB,HTTOT,TOPD, VOL(15), MHT
INTEGER REGN,ERRFLG
在 Python 中,我对函数的调用如下所示
from ctypes import *
mylib = cdll.LoadLibrary('/home/bryce/Programming/opencompile/libvollib.so')
dbhob = c_float(42.2)
vol = (c_float * 15)()
voleqi = c_char_p("101DVEW119 ")
mylib.ezvollib_(voleqi, dbhob, vol)
这在没有分段错误的情况下运行,但似乎没有用所需的 15 个浮点值“填充”变量 vol。
有没有办法让vol 检索从EZVOLLIB 函数返回的值?
【问题讨论】:
-
什么 15 个浮点值?
-
函数需要三个参数 ...
EZVOLLIB(VOLEQI,DBHOB,HTTOT,VOL)??