Cómo generar .so para Mono usando lenguaje C
En el mundo Linux, el lenguaje C sigue siendo el lenguaje principal.
Aquí es donde Mono se convierte en un dolor de cabeza.
Por supuesto, puede utilizar la función DLLImport para llamar a bibliotecas nativas (.so). Ahora hablemos de cómo generar sus propias bibliotecas nativas y llamarlas desde Mono.
Primero, escriba una función simple en lenguaje C, que solo se usa para devolver el resultado de agregar dos parámetros extraños.
//El nombre del archivo es sum.c
#include
int sum(int a, int b)
{
return a + b;
}
OK Genere la biblioteca local de destino llamada libsum.so. Utilice el compilador GCC para compilar los resultados que queremos
gcc -Wall -fPIC -O2 -c -o libsum.o sum.c //generate .o
gcc -shared - Wl,-soname,libsum.so -o libsum.so libsum.o //este es el paso que genera *** el archivo .so.**archivo so
Esta vez, libsum.so tiene generado, ahora puedes usarlo en Mono.
usando System;
usando System.Runtime.InteropServices;
clase pública UnsafeDemo
{
[ DllImport ("libsum.so", EntryPoint="sum")]//asegúrese de especificar EntryPoint
static extern int sum(int a, int b);
static extern void Main()
{
int x = suma(23, 45);
Console.WriteLine("x: {0}", x) ;
}
}
Luego podemos compilar nuestro programa:
$ mcs --unsafe UnsafeDemo.cs p>
$ mono UnsafeDemo.exe
Si no se encuentra libsum.so al compilar el programa, puede intentar colocar libsum.so en el mismo directorio que UnsafeDemo.exe.
Si no puede encontrar libsum.so, puede intentar colocar libsum.so en el mismo directorio que UnsafeDemo.exe.
Si no se puede encontrar libsum.so, puede intentar colocar libsum.so en el mismo directorio que UnsafeDemo.exe.
Si no se puede encontrar libsum.so, puede intentar colocar libsum.so en el mismo directorio que UnsafeDemo.exe. El uso mono es inusual.
//Segmento de código C
int debug (char *s)
{
printf("Salida: %s/n ", s);
devuelve -1;
}