utilizar dll hecha en C desde C#

C#, tambien llamado C Sharp

Moderador: Bestprogramado

    

utilizar dll hecha en C desde C#

Notapor osmgonzalez » Mar Abr 28, 2009 10:46 am

Hola a todos
Tengo una dll hecha en C con Visual Studio2005, que quiero utilizar desde una aplicacion hecha en C#
hasta ahora me estaba trabajando bien, el problema es que le quiero incluir funciones para el tratamiento de matrices.
Por ejemplo hago un metodo en en la dll que reciba un vector de enteros, lo ordene y retorne el vector ordenado.
El problema es que desde la aplicacion en C# no estoy recibiendo nada, me sale una excepcion, que dice mal manejo de codigo administrado con no administrado, pense que este problema lo resolvia System.Rutime.InteropService. o algo asi, no tengo el codigo delante.
Por favor cualquier ayuda sera valida, gracias de antemano
ogonzalezv@ceis.cujae.edu.cu
osmgonzalez
Novato
Novato
 
Mensajes: 1
Registrado: Mar Abr 28, 2009 10:28 am

Re: utilizar dll hecha en C desde C#

Notapor MicroLogic©Software » Mié Jun 03, 2009 3:47 pm

Hola.

Bueno para programadores en C# Mono, es un proceso que aun desconozco, pero para los programadores en C# de .NET Framework, la solucion es usar [DllImport], los pasos a seguir son:

1. Libreria DLL en C 0 C++
Código: Seleccionar todo
// Archivo Libreria.c
void test( )
{
    MessageBox( NULL, "Hola desde mi DLL", "Hola", MB_ICONINFORMATION );
}

// En en el .H escribimos
#define DLLEXPORT __cdeclspec (dllexport)
DLLEXPORT void test(void);


Nota: __cdeclspec es un convenio de funciones C que dara el decorado de exportacion "_test" a nuestra funcion, son convenios que por ahora no son necesarios detallar, pero si desean saber mas, pueden referenciarse de estos temas.

2. Ahora en C# importamos la funcion

Código: Seleccionar todo
// Archivo: Demo.cs
class MyProgram
{
    [DllImport ("Libreria.DLL", EntryPoint="test")]
    private static extern void test();

    public static void Main()
    {
        // llamamos a la funcion importada
        test();
    }
}


NOTA: Esta importacion es solo para .NET Framework. debe quedar claro. para programadores de Mono C# en Linux y/o WinNT, buscare alguna forma y apenas sepa la agregare.

Espero te sirva.
Avatar de Usuario
MicroLogic©Software
Usuario Activo
Usuario Activo
 
Mensajes: 48
Registrado: Mar Abr 05, 2005 1:57 pm

Re: utilizar dll hecha en C desde C#

Notapor skylard » Mar Sep 22, 2009 9:28 am

Hola, estoy intentando realizar este mismo ejemplo.
Para que funcione he metido el DLL generado en la carpeta BIN del proyecto desde donde la voy a importar y lo detecta bien.
Sin embargo, me sale el siguiente error en ejecución:

"No se puede encontrar el punto de entrada denominado 'test' en el archivo DLL 'MyDLL.DLL'."

¿alguien puede indicaarme lo que estoy haciendo mal?

estaré muy agradecida ante cualquier idea, gracias y saludos!
skylard
Novato
Novato
 
Mensajes: 1
Registrado: Mar Sep 22, 2009 9:25 am

Re: utilizar dll hecha en C desde C#

Notapor alexandre84 » Mar May 04, 2010 4:52 pm

hola estoy teniendo este mismo problema y mi solucion momentania es implementar una especie de wrapper utilizando C++ compilarlo y agregarlo como una referencia a mi proyecto C#, eso hasta ahora me esta funcionando.
Si alguien da con una solucion mejor por favor, dejenmela saber por favor.

Código: Seleccionar todo
// Archivo: Demo.h en C++
class Wrapped
{
    public:
    [DllImport ("Libreria.DLL"")]
    static void test();

   
}
alexandre84
Novato
Novato
 
Mensajes: 1
Registrado: Mar May 04, 2010 4:22 pm


    

Volver a C#

¿Quién está conectado?

Usuarios navegando por este Foro: No hay usuarios registrados visitando el Foro y 0 invitados

cron