2010-10-29 2 views
6

Managed C++ (C++/CLI)를 사용하여 VB6에서 호출 할 수있는 일부 클래스를 개발해야합니다.관리되는 C++ (C++/CLI)에서 COM 표시 어셈블리 생성

나는 C#에서 샘플을 먼저 개발했으며 문제없이 COM을 통해 어셈블리를 사용할 수 있습니다. "COM interop에 등록"및 "어셈블리 COM 표시"설정을 사용하고 [ClassInterface (ClassInterfaceType .AutoDual)] VB6에서 메서드를 사용할 수 있도록합니다.

그 후 나는 샘플을 C++/CLI로 번역하려했지만 성공하지 못했습니다. [ClassInterface (ClassInterfaceType.AutoDual)] 특성으로 같은 클래스를 만들었습니다. '임베디드 IDL'설정을 사용하여 출력 TLB를 지정하지만 TLB가 자동으로 생성되지 않습니다. 생성 된 DLL에 대해 tlbexp 유틸리티를 사용하면 VB6에서 가져올 수있는 tlb가 생기지 만 인스턴스를 만들려고하면 나는 "ActiveX 구성 요소는 객체를 만들 수 없습니다. 429) "

프로젝트를 실행하려면 더 무엇을해야합니까?

미리 감사드립니다.

답변

6

그리 많지는 않지만 조립 등록은 언급하지 않았습니다. C++ IDE에는 "COM interop에 등록"옵션이 없습니다. Visual Studio 명령 프롬프트에서 어셈블리에 Regasm.exe를 실행하여 등록하십시오. 어셈블리를 GAC에 넣지 않으려면/codebase 옵션이 필요합니다. 그리고/tlb 옵션은 형식 라이브러리를 생성하므로 tlbexp.exe가 필요 없습니다.

+0

어셈블리를 자동으로 tlbexp에 등록합니다. 맞습니까?/tlb 옵션은 컴파일러와 링커에서 인식 할 수없는 것으로보고됩니다. 그거 확실하니? –

+0

아니요, tlbexp는 형식 라이브러리 만 생성하며 아무것도 등록되지 않습니다./tlb 옵션은 컴파일러 나 링커가 아닌 Regasm.exe 용입니다. 그것은 당신이 내 게시물에서 그것을 얻지 못했다는 것을 크게 당황시킵니다. –

+0

조금 늦었어요. 나는 너의 포스트를 다시 읽었고 나는 너처럼 의아해했다. :) –

관련 문제