Python - 来自python33.dll的调用函数(访问冲突)

时间:2017-02-14 04:10:48

标签: python dll sublimetext3 ctypes

我有这段代码:

import ctypes


lib = ctypes.WinDLL('python33.dll')
print(lib['PyRun_SimpleString'])

func = lib['PyRun_SimpleString']

func.argtypes = [ctypes.c_char_p]
func.restype = ctypes.c_int

arg = "print(':P')"
arg = arg.encode('utf-8')

func(arg)

结果:

OSError: exception: access violation reading 0x00000004

使用sublime文本(python3.3嵌入)

运行

1 个答案:

答案 0 :(得分:1)

使用PyDLL,而不是WinDLL。来自文档:

  

此类的实例表现得像CDLL实例,除了在函数调用期间未释放Python GIL,并且在函数执行后检查Python错误标志。如果设置了错误标志,则会引发Python异常。

     

因此,这仅对直接调用Python C api函数有用。