2013-07-01 4 views
0

관리되지 않는 C 코드에서 .NET COM 라이브러리에 액세스하려고합니다.CoCreateInstance가 0x80131500과 함께 실패했습니다.

HRESULT hr = CoCreateInstance(__uuidof(XYZClient::XClient), NULL, CLSCTX_INPROC_SERVER, IID_PPV_ARGS(&pCl)); 

hr 결과는 0x80131500이며 이는 COM 라이브러리에서 예외가 발생했음을 의미합니다. 하지만 디버깅 할 때 .NET 클래스의 생성자에 들어 가지 않습니다.

COM을 통해 .NET에서 호출하면 잘 작동합니다.

적어도 예외 메시지를받는 방법에 대한 아이디어가 있으십니까?

편집 : Windows XP에서는 정상적으로 작동하지만 Win7 x64에서는 실패합니다.

+0

Windbg를 사용하면 더 많은 정보를 얻을 수 있습니다. http://blogs.msdn.com/b/alejacma/archive/2009/08/24/managed-debugging-with-windbg-breaking-on-an-exception-part- 1.aspx –

+0

이 클래스에 대한 typelib을 등록 했습니까? – user2702006

+0

예 모두 올바르게 등록되었습니다. 문제는 종속 라이브러리에있었습니다. – keaukraine

답변

0

문제는 라이브러리의 차이로 인해 발생했습니다. 일부 라이브러리는이 문제를 일으킨 32 비트 어셈블리로만 사용할 수있었습니다. 이 때문에 우리의 COM 라이브러리를로드하는 것은 생성자 코드를 입력하기 전에도 실패했습니다.

관련 문제