Exporter c ++ fonctions à l'intérieur d'un application C #
-
21-09-2019 - |
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
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 ...