我有这段代码:
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嵌入)
运行答案 0 :(得分:1)
使用PyDLL,而不是WinDLL。来自文档:
此类的实例表现得像CDLL实例,除了在函数调用期间未释放Python GIL,并且在函数执行后检查Python错误标志。如果设置了错误标志,则会引发Python异常。
因此,这仅对直接调用Python C api函数有用。