Question

Bonjour, Je suis désolé pour la peine, je vais vous montrer la question:

Je suis en train d'exporter certaines fonctions écrites en C ++ dans une DLL afin de les importer dans un C # application en cours d'exécution sur Visual Studio. Je fais l'exportation comme indiqué dans le code suivant,

tobeexported.h:

namespace SOMENAMESPACE
{
                class __declspec(dllexport) SOMECLASS
                {
                               public: 
                               SOMETYPE func(param A,char b[tot]);

                };
}

tobeexported.cpp:

#include "stdafx.h"
#include "tobeexported.h"
...


using namespace SOMENAMESPACE;

SOMETYPE SOMECLASS:: func(param A,char b[tot])
                {
                               ...some stuff inside...
                }

Le dll est righly créé et le code est déjà CLR gérés (regardé avec un logiciel de désassemblage (réflecteur)) et contient les fonctions exportées  je « Ajouter la référence » dans mon application c # et le dll est trouvé, mais quand Je l'ouvre avec le navigateur d'objets est complètement vide, ni classe, ni objet a été exporté et prêt à être utilisé

Pouvez-vous me aider s'il vous plaît? Merci Cordialement

Était-ce utile?

La solution

Qu'en est-il en utilisant géré C ++ pour compiler votre DLL? Il vous suffit d'ajouter un arbitre à la classe comme ceci:

namespace SOMENAMESPACE
{
                public ref class SOMECLASS
                {
                               public: 
                               SOMETYPE func(param A,char b[tot]);

                };
}

Après la compilation réussie et le référencement dans l'autre projet, la classe doit être visible. L'exportation natif C ++ est pas vraiment portable, chaque compilateur produit des résultats différents et est fastidieux de se lier à l'intérieur C # ...

EDIT: ajout modificateur d'accès public à la classe ref ...

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