2009-08-10 12 views
6

में कॉमविज़िबल मैं सी ++ को सी ++/सीएलआई में परिवर्तित कर रहा हूं और कुछ प्रबंधित वर्गों को COM ऑब्जेक्ट्स के रूप में बेनकाब करना चाहता हूं। सी # में यह आसान था और सेटिंग [कॉमविज़िबल] & इंटरफ़ेस से विरासत (भी कॉमविज़िबल) ने नौकरी की थी। हालांकि सी ++ परियोजना सी ++/सीएलआई के रूप में निर्माण DllRegisterServer निर्यात नहीं करता है।सी ++/सीएलआई

यहां नमूना प्रोजेक्ट है (वीएस 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; 
} 

जब मैं आउटपुट पर regsvr32 चलाता हूं .exe मुझे त्रुटि मिली है कि DllRegisterServer नहीं मिला था। मैंने कुछ मदद के लिए Google की कोशिश की है लेकिन बिना किसी सफलता के।

उत्तर

4

इसके बजाय आपको TlbExp का उपयोग करने की आवश्यकता है, TlbExp प्रबंधित कक्षाओं को COM को निर्यात करने के लिए टूल का उपयोग है, यह असेंबली को कॉमविज़िबल प्रकार ढूंढने और उन्हें पंजीकृत करने के लिए पढ़ेगा।

+0

आपकी सहायता के लिए धन्यवाद शै –

संबंधित मुद्दे