原文地址: http://blog.csdn.net/koupoo/article/details/7681974
//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