현재 문자열을 Fortran 라이브러리에 전달하려고합니다. 이 라이브러리의 다른 함수를 사용하기 위해이 함수를 사용했지만이 함수는 함수에 대한 인수로 전달 된 문자열을 원한다는 점에서 고유 한 것처럼 보입니다. 소스 코드를 보면ctypes를 사용하여 Fortran 서브 루틴에 문자열 전달
는, 함수는 세 개의 인수
SUBROUTINE EZVOLLIB(VOLEQI,DBHOB,HTTOT,VOL)
을 필요로하며 인수가 정의되어
이
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)'?? –