测试动态库

test_so.h

```

int test_so_func(int a,int b);

```

test_so.c

```

#include "test_so.h"

int test_so_func(int a,int b)

{

return a*b;

}

```

生成so

```

gcc -shared ./test_so.c -o test_so.so

```

复制so文件到golang项目目录

golang项目目录,建立

load_so.h

```

int do_test_so_func(int a,int b);

```

load_so.c

```

#include "load_so.h"

#include

int do_test_so_func(int a,int b)

{

void* handle;

typedef int (*FPTR)(int,int);

handle = dlopen("./test_so.so", 1);

FPTR fptr = (FPTR)dlsym(handle, "test_so_func");

int result = (*fptr)(a,b);

return result;

}

```

test.go

```

package main

/*

#include "load_so.h"

#cgo LDFLAGS: -ldl

*/

import "C"

import "fmt"

func main() {

fmt.Println("20*30=", C.do_test_so_func(20, 30))

fmt.Println("hello world")

}

```

编译运行即可。

####以上主要参考https://studygolang.com/articles/67,感谢博主分享

但是对于新手来说,对项目配置可能存在一定困难。

下面做了如下参考,仅供新手,勿吐槽!!!

![屏幕快照 2017-09-15 11.51.37.png](https://static.studygolang.com/170915/570b45060b82862dfa053938d6e42543.png)

项目结构配置

![屏幕快照 2017-09-15 11.52.41.png](https://static.studygolang.com/170915/4f85e598d785eb589bd28af515679fc4.png)

Project GOPATH配置

![屏幕快照 2017-09-15 11.53.03.png](https://static.studygolang.com/170915/3e122db2f13b7b1576fa0f483908ce74.png)

Run/Debug Configurations配置

有疑问加站长微信联系(非本文作者))