2010-05-28 3 views
0

내 파이썬 프로젝트에서 나는 ctypes 라이브러리를 사용하여 C++ dll을 호출한다. 그 C++ dll은 C# com interop dll의 메소드를 호출하는 래퍼 dll로 구성됩니다.C++ DLL의 ctypes 호출을 디버깅하는 방법은 무엇입니까?

때때로 COM 예외가 있습니다. 나는 정확히 일치하는 것을보고 싶지만 어떻게 해야할지 모르겠다.

이 상황에 어떻게 C++ 디버거를 연결할 수 있습니까? 나는 당신의 직접적인 질문에 대해 잘 모르지만, 어쩌면 당신이 바로 COM에서 파이썬 대신 사이에 C++를 고집로 이동 comtypes를 사용하여 주위에 얻을 수있는 사전

답변

0

감사합니다.

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

관련 문제