2010-05-28 144 views
0

在我的python項目中我使用ctypes庫調用C++ dll。 C++ dll包含一個調用c#com interop dll方法的包裝器dll。如何調試C++ dll的ctypes調用?

有時我有一個COM異常。我想看看它確切地對應着什麼,但我不知道該怎麼做?

如何將C++調試器附加到這種情況?

在此先感謝

回答

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 
+0

但我能得到什麼異常將是更多信息?因爲如果你不知道,在這種情況下,由C++調用給出的任何異常都是COM異常^^ – 2010-05-28 15:19:40

+0

是的;您可以獲取原始異常中包含的所有信息,作爲COMError對象的成員。 – Jorenko 2010-05-28 15:59:52

+0

編輯以顯示如何從COMError對象獲取額外信息。 – Jorenko 2010-05-28 16:10:28