如何调试ctypes调用的C++ DLL?
在我的Python项目中,我使用ctypes库调用一个C++的动态链接库(dll)。这个C++的dll实际上是一个包装器dll,它会调用一个C#的COM互操作dll的方法。
有时候我会遇到COM异常。我想知道这个异常到底是什么原因造成的,但我不知道该怎么做。
我该如何在这种情况下连接C++的调试器呢?
提前谢谢你!
1 个回答
0
我不太清楚你具体的问题,但或许你可以通过使用 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