none
uso de dll creada en C# desd visual c++ RRS feed

  • Pregunta

  • hola

    me gustaria k me pudieran explicar como importo una dll que cree en c#, a una aplicacion de consola en visual c++2008, la dll creada a en c# 3es la siguiente

    namespace practice_dll
    {
        public class Class1
        {
            public double operacion(double n1, double n2)
        {
            return (n1+ n2);
        }
        }
    }

    me gustaria saber como llamar esa dll desd visual c++ porfa muchas gracias

    lunes, 12 de marzo de 2012 7:56

Respuestas

  • A lo que te comenta webJose, que tiene que ser C++/CLI, si lo quieres en C ó C++ normal, tienes que hacerte un "wrapper" en C++/CLI: una nueva DLL que cargue la DLL que has hecho y que ofrezca una interfaz en C ó C++ de tu DLL manejada.

    Algo así:

    Class1 miClase;
    
    #pragma unmanaged
    
    __declspec(dllimport) double operacion(double p1,double p2)
    {
        return miClase.operacion(p1,p2);
    }
    #pragma managed
    
    

    Y luego tendrías que definir un fichero cabecera con algo similar a esto.

    extern "C" __declspec(dllexport) double operacion(double p1,double p2)
    

    Ten en cuenta que escribo de memoria, así que tendrás que modificar el código.


    MVP Visual C++ - Visita mi blog sobre desarrollo: http://geeks.ms/blogs/rfog/

    lunes, 12 de marzo de 2012 9:31
    Moderador
  • borrado

    • Marcado como respuesta webJoseModerator sábado, 4 de agosto de 2012 20:57
    • Editado JulioCésar miércoles, 13 de febrero de 2013 12:09
    lunes, 12 de marzo de 2012 16:09

Todas las respuestas

  • El proyecto de C++ tendría que ser un proyecto de C++/CLI.  Luego simplemente agrega la DLL compilada como una referencia al proyecto usando el nodo de referencias en el explorador de soluciones (Solution Explorer).

    Jose R. MCP

    lunes, 12 de marzo de 2012 8:02
    Moderador
  • A lo que te comenta webJose, que tiene que ser C++/CLI, si lo quieres en C ó C++ normal, tienes que hacerte un "wrapper" en C++/CLI: una nueva DLL que cargue la DLL que has hecho y que ofrezca una interfaz en C ó C++ de tu DLL manejada.

    Algo así:

    Class1 miClase;
    
    #pragma unmanaged
    
    __declspec(dllimport) double operacion(double p1,double p2)
    {
        return miClase.operacion(p1,p2);
    }
    #pragma managed
    
    

    Y luego tendrías que definir un fichero cabecera con algo similar a esto.

    extern "C" __declspec(dllexport) double operacion(double p1,double p2)
    

    Ten en cuenta que escribo de memoria, así que tendrás que modificar el código.


    MVP Visual C++ - Visita mi blog sobre desarrollo: http://geeks.ms/blogs/rfog/

    lunes, 12 de marzo de 2012 9:31
    Moderador
  • borrado

    • Marcado como respuesta webJoseModerator sábado, 4 de agosto de 2012 20:57
    • Editado JulioCésar miércoles, 13 de febrero de 2013 12:09
    lunes, 12 de marzo de 2012 16:09