如何调试ctypes调用的C++ DLL?

0 投票
1 回答
528 浏览
提问于 2025-04-15 23:17

在我的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

撰写回答