2010-08-02 17 views
2

J'ai un projet appelé ManagedWrapper qui est géré C++ et construit en tant que DLL.vs2008 Incluant la classe C++ gérée d'une DLL dans une autre classe C++ managée?

J'ai un deuxième projet appelé MyManagedTest qui est géré C++ et construit en tant que DLL.

Lorsque j'essaie d'inclure un en-tête de ManagedWrapper dans MyManagedTest, j'obtiens des erreurs de lieur LNK2020. J'ajoute ensuite une référence à ManagedWrapper dans "Frameworks and References" mais cela provoque des erreurs de compilateur disant que les classes dans ManagedWrapper sont déjà définies (on dirait qu'il essaie de les définir à nouveau dans MyManagedTest parce que j'ai inclus les fichiers d'en-tête).

Quelle est la bonne façon d'inclure des classes de ManagedWrapper dans MyManagedTest?

Merci.

Répondre

1

Vous devez utiliser #include pour les déclarations de classe native et #import pour les déclarations de classe gérée. L'ajout d'une référence est identique à #import. BTW, "Managed C++" n'est pas le nom correct pour utiliser C++ avec .NET dans VS2008. Cette fonctionnalité est C++/CLI. Les versions antérieures de Visual C++ comportaient une syntaxe très buggée appelée "Managed Extensions for C++", souvent appelée "C++ managé" et ne devait jamais être utilisée.

+0

Ce n'était pas vraiment ce que je voulais, mais merci de m'avoir aidé à comprendre la bonne terminologie. – Ben

+0

La première phrase est ma réponse. N'utilisez pas '# include' pour les fichiers d'en-tête contenant des classes managées qui existent dans une autre DLL. Utilisez '# import' à la place (ou ajoutez une référence, qui est la même que' # import'). –