Pregunta

Saludos, Lo siento por molestar, voy a mostrar la pregunta:

Estoy tratando de exportar algunas funciones escritas en C ++ en una DLL con el fin de importarlos en un C # aplicación que se ejecuta en Visual Studio. Hago la exportación como se indica en el siguiente código:

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...
                }

El archivo DLL se creó righly y el código ya está CLR-administrado (se veía con un software de desmontaje (reflector)) y contiene las funciones exportadas  entonces "agregar la referencia" en mi aplicación C # y se encuentra el archivo DLL, pero cuando Lo abro con el explorador de objetos está completamente vacía, ni clase, ni objeto ha sido exportado y listo para su uso

¿me pueden ayudar por favor? Gracias saludos cordiales

¿Fue útil?

Solución

¿Qué pasa con el uso manejado C ++ para compilar el archivo DLL? A continuación, sólo tiene que añadir una referencia a la clase como esta:

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

                };
}

Después de una compilación exitosa y hacer referencia en el otro proyecto, la clase debe ser visible. Exportando nativo C ++ no es realmente portátil, cada compilador produce resultados diferentes y es tedioso para enlazar desde dentro de C # ...

EDIT: añadido modificador de acceso público a la clase ref ...

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top