0
在我的python项目中我使用ctypes库调用C++ dll。 C++ dll包含一个调用c#com interop dll方法的包装器dll。如何调试C++ dll的ctypes调用?
有时我有一个COM异常。我想看看它确切地对应着什么,但我不知道该怎么做?
如何将C++调试器附加到这种情况?
在此先感谢
在我的python项目中我使用ctypes库调用C++ dll。 C++ dll包含一个调用c#com interop dll方法的包装器dll。如何调试C++ dll的ctypes调用?
有时我有一个COM异常。我想看看它确切地对应着什么,但我不知道该怎么做?
如何将C++调试器附加到这种情况?
在此先感谢
我不知道你直接的问题,但也许你可以通过使用comtypes直来直去,从COM到Python之间,而不是坚持C++绕过它。
然后,所有你需要做的是:
>>> from comtypes import client, COMError
>>> myclassinst = client.CreateObject('MyCOMClass.MyCOMClass')
>>> try:
... myclassinst.DoInvalidOperation()
... except COMError as e:
... print e.args
... print e.hresult
... print e.text
...
(-2147205118, None, (u'MyCOMClass: An Error Message', u'MyCOMClass.MyCOMClass.1', None, 0, None))
-2147205118
None
但我能得到什么异常将是更多信息?因为如果你不知道,在这种情况下,由C++调用给出的任何异常都是COM异常^^ – 2010-05-28 15:19:40
是的;您可以获取原始异常中包含的所有信息,作为COMError对象的成员。 – Jorenko 2010-05-28 15:59:52
编辑以显示如何从COMError对象获取额外信息。 – Jorenko 2010-05-28 16:10:28