【问题标题】:How to debug ctypes call of c++ dll?如何调试 c++ dll 的 ctypes 调用?
【发布时间】:2010-05-28 14:42:48
【问题描述】:

在我的 python 项目中,我使用 ctypes 库调用了一个 c++ dll。 该 c++ dll 包含在调用 c# com interop dll 方法的包装 dll 上。

有时我会遇到 COM 异常。我想看看它到底对应什么,但我不知道该怎么做?

如何将 c++ 调试器附加到这种情况?

提前致谢

【问题讨论】:

    标签: c# c++ python dll


    【解决方案1】:

    我不知道你的直接问题,但也许你可以通过使用 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 异常^^
    • 是的;作为 COMError 对象的成员,您可以获得原始异常中包含的所有信息。
    • 编辑显示如何从 COMError 对象获取额外信息。
    猜你喜欢
    • 2019-10-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-10-19
    • 2013-11-23
    • 1970-01-01
    • 2020-12-04
    • 2015-02-22
    相关资源
    最近更新 更多