2009-08-10 30 views
6

Tôi đang chuyển đổi C++ thành C++/CLI và muốn hiển thị một số lớp được quản lý dưới dạng đối tượng COM. Trong C# nó đã được dễ dàng và thiết lập [ComVisible] & kế thừa từ giao diện (cũng ComVisible) đã làm công việc. Tuy nhiên dự án C++ được xây dựng dưới dạng C++/CLI không xuất DllRegisterServer.ComVisible in C++/CLI

Đây là dự án mẫu (bắt đầu từ dự án CLR Console Application trong VS 2008).

#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; 
} 

Khi tôi chạy regsvr32 trên đầu ra .exe Tôi gặp lỗi khi không tìm thấy DllRegisterServer. Tôi đã thử google để được giúp đỡ nhưng không thành công.

Trả lời

4

Bạn cần sử dụng TlbExp thay vào đó, TlbExp là công cụ sử dụng để xuất các lớp được quản lý thành COM, nó sẽ đọc lắp ráp tìm loại ComVisible và đăng ký chúng.

+0

Cảm ơn sự giúp đỡ của bạn Shay –