我正在尝试创建一个com客户端来向服务器发送消息。我有oleviewer定义并用python创建了结构(类),这些结构(类)用于构造一个包含更多结构和枚举的复杂结构。在
似乎一切都很顺利,但当我试图将SampleObject*传递给客户机调用时,我得到了以下错误:
ctypes.ArgumentError: argument 1: <type 'exceptions.TypeError'>:
expected LP__SampleObject instance instead of LP__SampleObject
这看起来很奇怪。我所做的是(这是我得到错误的地方):
^{pr2}$我试过很多方法,但都绕不开这个错误。有什么想法吗?在
(obj只是一个cc.CreateObject()coclass对象,工作正常)
我真的看不出问题所在,甚至连comtype定义都在界面中显示:
( ['in'], POINTER(_SampleObject), 'pAction' ),
完全符合指针(对话框)。这是一个非常奇怪的错误,可能是comtypes上的but吗?在
您是否多次定义
ctypes
结构和参数的联合?在如果您定义了一个
Structure
或Union
子类,在C库函数的argtypes
中使用它,重新定义结构或联合,然后尝试将重新定义的类的实例传递给C函数,您将得到与您看到的类似的错误。在我取了我在this answer中使用的代码,并添加了一个(完全不必要的)与它一起使用的结构的重新定义。(我还将结尾处的
byref
改为pointer
-使用byref
会给您一个不同的错误消息。)Python代码的结果如下:当我运行这个修改过的脚本时,我得到了以下输出:
^{pr2}$相关问题 更多 >
编程相关推荐