現在、文字列をFortranライブラリに渡そうとしています。私はこのライブラリの他の関数を動作させましたが、この特定の関数は、関数の引数として渡される文字列を必要とする点でユニークなようです。ctypesを使用してFortranサブルーチンに文字列を渡す
ソースコードを見ると、関数は三つの引数
SUBROUTINE EZVOLLIB(VOLEQI,DBHOB,HTTOT,VOL)
を必要と引数が定義されています:Pythonで
IMPLICIT NONE
CHARACTER*(*) VOLEQI
CHARACTER*10 VOLEQ
REAL DBHOB,HTTOT,TOPD, VOL(15), MHT
INTEGER REGN,ERRFLG
関数への私の呼び出しは
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)
のように見えます
これはセグメンテーションフォールトなしで実行されますが、変数012を "満たす"ようではありませんには、15個の浮動小数点値が入ります。
vol
には、EZVOLLIB
関数から返される値を取得する方法はありますか?
15個の浮動小数点値は何ですか? – martineau
*関数は3つの引数を必要とします* ... 'EZVOLLIB(VOLEQI、DBHOB、HTTOT、VOL)' ?? –