2010-12-22 3 views
1

응용 프로그램을 사용하고 있었는데 완벽하게 작동했습니다. 그것을 사용하지 않은 몇 달 후, 나는 그것을 실행하려하고 그것은 작동하지 않습니다. COM 개체를 인스턴스화 할 수 없다는 메시지 상자가 표시됩니다.응용 프로그램에서 COM 개체 오류를 추적 중

COM 개체의 오류를 추적하는 방법을 알고 있습니까?

답변

1

ProcessMonitor를 사용하여 올바르지 않을 수있는 레지스트리 키를 찾을 수 있습니다. 다른 옵션은 http://www.moduleanalyzer.com을 사용하고, 생성 된 모든 COM 개체와 반환 값을 보여주는 CoCreateInstance를 가로 채기입니다.

+0

ProcessMonitor를 시도했지만 실제로 어떻게 도움이되는지 이해하지 못했습니다. 나는 레지스트리 키를 보았다. 그리고 모든 것은 ok로 보인다. 모듈 분석기에서 문제가 발견되어 DLL을 다시 등록 할 때 COM 오류가 발생하여 문제가 해결되었습니다. 새 버전의 개체가 설치되었고 이전 응용 프로그램이 개체에 대해 더 이상 유효하지 않은 이전 인터페이스를 요청한 것처럼 보입니다. 올바른 개체를 등록하면 응용 프로그램이 원활하게 실행됩니다! –

1

실행 COM 개체 DLL에 필요한 도구가 모두 있는지 확인하여 COM dll/exe를 다시 등록하십시오.

디버깅/로그의 모든 HRESULTS는 무엇입니까? 아파트 모델의 변경 사항?

일단 아파트 유형을 설정하면 변경할 수 없습니다. 따라서 개체가 모델 중 하나를 사용할 수없고 공동 작성하려고하면 실패합니다. 그래서 내부 DLL 메인 스레드에서 CoInit을 호출하지 않습니다.

+0

DebugView는 오류를 표시하지 않습니다. 예, 그 상황에서 CoCreate가 실패하지만 어떤 객체가 CoCreateInstance에 실패했는지 알고 싶습니다. –