2013-06-14 4 views
0

vs2008 ATL 마법사를 사용하여 COM dll을 만들었습니다. 새로운 인터페이스를 만들고 두 가지 방법을 구현했습니다. 기본 기능은 다른 응용 프로그램에서이 COM 구성 요소에 액세스하려는 마법사에 의해 처리됩니다.등록되지 않은 오류가 CoGetClassObject에서 반환되었습니다.

CoCreateInstance() 또는 CoGetClasObject()를 사용하면 클래스가 등록되지 않은 오류 (0x80040154)가 나타납니다. COM dll에서 구현할 항목이 누락 되었습니까? regsvr32를 사용하여 DLL을 등록하고 CLSID, IID, Typelib에 해당하는 항목을 레지스트리에 등록했습니다.

Client Code: 

::CoInitializeEx(NULL, COINIT_MULTITHREADED); 

ISampleCOM* pSampleCOM; 

HRESULT hr = ::CoGetClassObject(CLSID_CSampleCOM,CLSCTX_LOCAL_SERVER,NULL, 
        IID_ISampleCOM, (void**)&pSampleCOM); 

시간은 반환 (0x80040154) 어떤 도움이 예를 들어 32 비트 응용 프로그램을 위해, 당신은에서 COM 개체에 액세스하는 위치에 따라 달라집니다

+0

CLSCTX_LOCAL_SERVER 대신 CLSCTX_ALL을 사용해 보셨습니까? –

+0

이미이 오류 코드에 대한 * 수백 * 개의 질문이 있습니다. 적어도 기존 답변을 검토 한 다음 다시 돌아와서 왜 * none *이 문제에 적용되었는지 설명하십시오. –

답변

0

나에게 크게 도움이 될 것입니다

클래스가 등록되지 않았습니다 오류 어셈블리가 x86 구성으로 빌드 된 객체에 액세스하고 64 비트 응용 프로그램은 어셈블리가 x64 구성으로 빌드 된 객체에 액세스합니다.

+0

32 비트 응용 프로그램에서 x86 구성으로 com 객체 빌드를 사용합니다. – user2482613

+0

64 비트 OS를 사용 중이며 cmd의 regsvr32를 사용하여 DLL을 등록합니다. 명시 적으로 c : \ windows \ syswow64 \ regsvr32를 사용하여 등록하지 않았습니다. 이 문제가 발생하면 – user2482613

+0

일 수 있습니다. 개체 정보 (progid 및 clsid)가있는 레지스트리 항목을 검사하여 명확한 정보를 제공 할 수 있습니다 – srsyogesh

관련 문제