我正在尝试在Fortran DLL中调用子例程,该子例程需要传递3个可变字符串。子程序的格式为:
Subroutine Getinfo(string_1, string_2, string_3, index)
char *60 string_1, string_2
char *30 string_3
string_1 = "String 1 return value"
string_2 = "String 2 return value"
string_3 = "String 3 return value"
end subroutine
我在python中调用函数如下:
dll = ctypes.windll.LoadLibrary('library.dll')
funcprot = getattr(dll, 'Getinfo')
funcprot.argtypes = [ctypes.c_char_p, ctypes.c_long, ctypes.c_char_p, ctypes.c_long,
ctypes.c_char_p, ctypes.c_long, ctypes.c_long]
string_1 = ctypes.create_string_buffer(60)
string_2 = ctypes.create_string_buffer(60)
string_3 = ctypes.create_string_buffer(30)
funcprot(string_1, 60, string_2, 60, string_3, 30, 701)
我收到以下错误。
WindowsError: exception: access violation reading 0x000002BD
我尝试了post的建议,但没有帮助。
我做错了什么?谢谢你的帮助。