2010-05-28 2 views
0

в моем проекте python Я вызываю dll C++, используя библиотеку ctypes. Эта dll dll состоит из DLL-оболочки, которая вызывает методы dll C# com interop.Как отлаживать вызов ctypes для dll C++?

Иногда у меня есть исключение 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-исключениями ^^ –

+0

Да; Вы получаете всю информацию, которая была включена в исходное исключение, как члены объекта COMError. – Jorenko

+0

Отредактировано, чтобы показать, как вы можете получить дополнительную информацию из объекта COMError. – Jorenko

Смежные вопросы