2017-10-11 3 views
2

ich diese Seite verwendet haben, rufen https://support.microsoft.com/en-in/help/828736/how-to-call-a-managed-dll-from-native-visual-c-code-in-visual-studio-nWie eine verwaltete DLL aus nativen Visual C++ Code in Visual Studio.NET oder Visual Studio 2005

Problem-

Ich habe MyInterop.tlb-Datei erstellen, und dies in Projekt. Ich habe erstellen Fenster Installer einrichten, wenn ich

CoInitialize(NULL); 
IWindowPtr pDotNetCOMPtr; 

HRESULT hRes = 
    pDotNetCOMPtr.CreateInstance(__uuidof(WindowClass)); 

flag=pDotNetCOMPtr->show(); 

CoUninitialize(); 

Klasse nicht registrierte Problem auf andere Maschine eingerichtet Installation ist

Antwort

1

Die COM-Objekt registriert werden muss auftreten. Sie können dies tun, indem Sie "Registrierung für COM-Interop" im Visual Studio-Projekt aktivieren, wie im Bild gezeigt, oder Sie müssen es in Ihrem Installer-Lauf registrieren. Vergewissern Sie sich, die Header wie das Beispiel verknüpfen Sie

gesendet
RegAsm.exe ManagedDLL.dll /tlb:ManagedDLL.tlb /codebase 

Das COM-Objekt sollte auch eine GUID haben. Dies ermöglicht es der Registrierung, damit korrekt umzugehen.

In früheren Arbeiten sind dies die Header, die ich eingefügt habe. Jeder Guid ist für jedes Objekt, das registriert wird .:

[ComVisible(true)] 
    [ClassInterface(ClassInterfaceType.None)] 
    [Guid("7F2DA4BD-12BF-4EE7-80E7-F85D1F15926C")] 

Register For COM Interop