number.h

1
int number_add_mod(int a, int b, int mod);

number.c

1
2
3
4
5
#include "number.h"

int number_add_mod(int a, int b, int mod) {
return (a+b)%mod;
}

静态库

1
2
3
cd ./number
gcc -c -o number.o number.c
ar rcs libnumber.a number.o

go引入静态库

1
2
3
4
5
6
7
8
9
10
11
12
package main

//#cgo CFLAGS: -I.
//#cgo LDFLAGS: -L${SRCDIR} -lnumber
//
//#include "number.h"
import "C"
import "fmt"

func main() {
fmt.Println(C.number_add_mod(10, 5, 12))
}

注意: import “C” 必须是第一个引入的包,且跟注释的C代码,中间无空行。