init: v1.0.0
This commit is contained in:
@@ -0,0 +1,35 @@
|
||||
# 简介
|
||||
输出gcl中的功能为C库
|
||||
|
||||
步骤:
|
||||
- lib.go中编写要输出的函数:
|
||||
```
|
||||
//export Sm3
|
||||
func Sm3(in []byte, out []byte) {
|
||||
d := sm3.Sum(in)
|
||||
copy(out, d[:])
|
||||
}
|
||||
```
|
||||
- 生成go导出的C库(c-archive)
|
||||
```
|
||||
go build -buildmode=c-archive -o libgcl_go.a lib.go
|
||||
```
|
||||
- lib.c中编写C包装代码
|
||||
```
|
||||
int sm3(void *data, int dataLen, void *digest){
|
||||
// input check, omit
|
||||
|
||||
GoSlice in = {
|
||||
data, dataLen, dataLen
|
||||
};
|
||||
GoSlice out = {
|
||||
digest, 32, 32
|
||||
};
|
||||
Sm3(in,out);
|
||||
return 0;
|
||||
}
|
||||
```
|
||||
- gcc编译gcl.c为动态库
|
||||
```
|
||||
gcc -shared -o libgcl.dylib -L. -lgcl_go gcl.c
|
||||
```
|
||||
Reference in New Issue
Block a user