2008-08-15 6 views
3

In C++ - Programm, ich versuche # TLB von .NET Out-of-Process-Server importieren.Probleme mit # Import von .NET Out-of-Process-Server

I erhalten Fehler wie:

z: \ server.tlh (111): Fehler C2146: Syntaxfehler: fehlen; vor Bezeichner

z 'GetType': \ server.tlh (111): Fehler C2501: '_TypePtr': Fehlende Speicherklasse oder Spezifizierer

z: \ server.tli (74): Fehler C2143: Syntaxfehler: fehlt ';' vor 'tag :: id'

z: \ server.tli (74): Fehler C2433: '_TypePtr': 'inline' nicht auf Daten gestattet Erklärungen

z: \ server.tli (74): Fehler C2501: '_TypePtr': fehlende Speicherklasse oder Spezifizierer

z: \ server.tli (74): fatal error C1004: unerwartetes Ende der Datei gefunden

Die TLH wie folgt aussieht:

_bstr_t GetToString(); 
VARIANT_BOOL Equals (const _variant_t & obj); 
long GetHashCode(); 
_TypePtr GetType(); 
long Open(); 

Ich bin nicht wirklich daran interessiert, die Objekt .NET-Objekt Methoden wie GetType(), Equals() usw. zu haben. Aber GetType() scheint Probleme zu verursachen.

Einige google research zeigt an, dass ich #import mscorlib.tlb (oder legte es in Pfad), aber ich kann nicht, dass auch kompilieren.

Irgendwelche Tipps?

Antwort

1

Added no_namespace und raw_interfaces_only meiner #import:

#import "server.tlb" no_namespace named_guids 

auch mit Tlbexp.exe statt RegAsm.exe scheint dieses Problem zu helfen.

+0

TLBEXP hat mir nicht geholfen, raw_interfaces_only hat. Warum enthält das Codebeispiel named_guids anstelle von raw_interfaces_only? –

0

Also, stellen Sie sicher, dass Ihre C# Klasse dieses Attribut nicht haben:

[Classinterface (ClassInterfaceType.AutoDual)] < - Scheint Fehler in C++ verursachen mit _TypePtr

+0

Irgendeine Idee, warum das passiert? –

1

mehr ofenly, wenn vs Entsprach die com-Quelle zu einem tlb in es wird einen Hinweis wie folgt haben: // #import "C: \ WINDOWS \ Microsoft.NET \ Framework \ v2.0.50727 \ mscorlib.tlb" Sie sollten dies zu StdAfx hinzufügen .h vor dem #inport youOwn.tlb wird die Basice-Eigenschaft wie _Type, _ObjRef hinzugefügt ed in dir Projekt für den Prototyp

ich denke, es wird dein Problem lösen.

aber das größere Problem ist: nach every getan, da einige Laufzeitfehler, wenn Sie eine Ptr rufen in Ihnen

programmieren kann jemand helfen?

1

Es scheint, dass Sie

[ClassInterface(ClassInterfaceType.None)] 

Hier ist another discussion über das ähnliche Problem verwenden müssen.

3
#import "C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\mscorlib.tlb" was the solution for me.