Question

Dans le programme C++, j'essaie d'#importer le TLB du serveur .NET hors processus.

J'obtiens des erreurs comme :

z:\server.tlh(111) :erreur C2146 :erreur de syntaxe :manquant ';' Avant l'identifiant «getType»

z:\server.tlh(111) :erreur C2501 :'_TypePtr' :spécificateurs de classe de stockage ou de type manquants

z:\server.tli(74) :erreur C2143 :erreur de syntaxe :manquant ';' Avant 'tag :: id'

z:\server.tli(74) :erreur C2433 :'_TypePtr' :'inline' n'est pas autorisé sur les déclarations de données

z:\server.tli(74) :erreur C2501 :'_TypePtr' :spécificateurs de classe de stockage ou de type manquants

z:\server.tli(74) :erreur fatale C1004 :fin de fichier inattendue trouvée

Le TLH ressemble à :

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

Je ne suis pas vraiment intéressé par les méthodes d'objet .NET de l'objet de base telles que GetType(), Equals(), etc.Mais GetType() semble poser des problèmes.

Certaines recherches sur Google indiquent que je pourrais #import mscorlib.tlb (ou mettez-le dans le chemin), mais je n'arrive pas non plus à le compiler.

Des conseils ?

Était-ce utile?

La solution 3

Ajout de no_namespace et raw_interfaces_only à mon #import :

#import "server.tlb" no_namespace named_guids

L'utilisation de TLBEXP.EXE au lieu de REGASM.EXE semble également résoudre ce problème.

Autres conseils

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

Plus d'image, lorsque VS a respecté la source com à un TLB, il aura un indice comme ceci:// #import "c: windows microsoft.net framework v2.0.50727 mscorLib.tlb" vous shoud ajoutez ceci à stdafx.h avant #inport vous Projet pour le type proto

je pense que cela résoudra votre problème.

mais le plus gros problème est :après tout, des erreurs d'exécution se produisent lorsque vous appelez un Ptr dans votre programme

quelqu'un peut aider ?

Il semble que vous deviez utiliser

[ClassInterface(ClassInterfaceType.None)]

Voici une autre discussion à propos du problème similaire.

Assurez-vous également que votre classe C# ne possède pas cet attribut :

[ClassInterface(ClassInterfaceType.AutoDual)] <-- Semble provoquer des erreurs en C++ avec _TypePtr

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top