调用Fortran DLL的Python ctypes和可变字符串:访问冲突错误

时间:2014-05-16 18:17:48

标签: python fortran ctypes

我正在尝试在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的建议,但没有帮助。

我做错了什么?谢谢你的帮助。

0 个答案:

没有答案