2009-08-10 6 views
6

저는 C++를 C++/CLI로 변환 중이며 일부 관리되는 클래스를 COM 객체로 표시하려고합니다. C#에서는 쉬웠고 [ComVisible] &을 인터페이스 (ComVisible도)에서 상속 받으면 작업을 수행했습니다. 그러나 C++/CLI로 빌드 된 C++ 프로젝트는 DllRegisterServer를 내 보내지 않습니다.ComVisible in C++/CLI

다음은 샘플 프로젝트입니다 (VS 2008의 CLR 콘솔 응용 프로그램 프로젝트에서 시작됨).

#include "stdafx.h" 

using namespace System; 
using namespace System::Runtime::InteropServices; 

[ComVisible(true)] 
[Guid("E3CF8A18-E4A0-4bc3-894E-E9C8648DC1F0")] 
[InterfaceType(ComInterfaceType::InterfaceIsDual)] 
public interface class ITestInterface 
{ 
    void TestMethod(); 
}; 


[ComVisible(true)] 
[Guid("1514adf6-7cb0-4561-9fbb-b75c0467149b")] 
public ref class CliComClass : ITestInterface 
{ 
    public: 
     virtual void TestMethod() 
     { 
     } 
}; 

int main(array<System::String ^> ^args) 
{ 
    Console::WriteLine(L"Hello World"); 
    return 0; 
} 

출력 .exe에서 regsvr32를 실행하면 DllRegisterServer를 찾을 수 없다는 오류가 나타납니다. 나는 도움을 청하지만 성공하지 못했다.

답변

4

대신 TlbExp을 사용해야합니다. TlbExp는 관리되는 클래스를 COM으로 내보내는 데 사용되는 도구이며, 어셈블리를 읽고 ComVisible 유형을 찾고 등록합니다.

+0

도움 주셔서 감사합니다. Shay –