我在Windows 7上使用Python cType访问C++ DLL。我有DLL的文档,但实际上我无法打开它。我尝试使用C++函数,它包含一个函数,而函数又包含一个无符号int和一个空指针。下面是一个失败的简短代码示例:
import ctypes
import os
root = os.path.dirname(__file__)
lib = ctypes.WinDLL(os.path.join(root, 'x86', 'toupcam.dll')) #works
cam = lib.Toupcam_Open(None) #works
def f(event, ctx): #Python version of function to pass in
pass
#converting Python function to C function:
#CFUNTYPE params: return type, parameter types
func = ctypes.CFUNCTYPE(None, ctypes.c_uint, ctypes.c_void_p)(f)
res = lib.Toupcam_StartPullModeWithCallback(cam, func) #fails
每当我运行此代码时,最后一行会出现以下错误:
^{pr2}$ 我真的不知道如何处理这个问题,因为它是C++错误而不是Python错误。我认为这与我的空指针有关,因为我在C++中发现的类似错误是指针相关的。Ctypes void指针有问题吗,还是我做错了什么?在
您需要声明使用
argtypes
调用的函数的参数类型。由于我不知道您的确切API,下面是一个示例:带有回调的Windows C DLL代码:
Python代码:
^{pr2}$输出:
相关问题 更多 >
编程相关推荐