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