//testlib.c中的内容:
#include <stdio.h>
int sum(int a, int b)
{
return a + b;
}
int minus(int a, int b){
return a - b;
}
//main.cs中的内容:
using System;
using System.Runtime.InteropServices;
public class LibTestDemo
{
[DllImport ("libtest.so", EntryPoint="sum")]
static extern int sum(int a, int b);
[DllImport ("libtest.so", EntryPoint="minus")]
static extern int minus(int a, int b);
static void Main()
{
int x = sum(88, 42);
Console.WriteLine("88 + 42 = {0}", x);
x = minus(88, 42);
Console.WriteLine("88 - 42 = {0}", x);
}
}
1、在linux上将libtest.c编译成动态库libtest.so
#gcc -c -o libtest.o libtest.c
#gcc -shared -o libtest.so libtest.o
2、编译c#
用windows的vs环境将main.cs编译成main.exe
或
用装有mono环境的linux将main.cs编译成main.exe:
#mcs main.cs
3、在linux上将main.exe和libtest.so放在同一个目录下,然后运行main.exe,即可看到c#中调用so库的结果
#mono main.exe