Skip to content

Commit 9b1d2c2

Browse files
committed
Add go interop with rust lib
1 parent 1ce8afa commit 9b1d2c2

File tree

6 files changed

+45
-3
lines changed

6 files changed

+45
-3
lines changed

.github/workflows/interop.yml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -31,4 +31,5 @@ jobs:
3131
working-directory: 'interop/multiplier-static'
3232
- run: cargo clippy
3333
working-directory: 'interop/multiplier-dynamic'
34+
- uses: actions/setup-go@v5
3435
- run: make all

interop/Makefile

Lines changed: 8 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,15 +1,20 @@
1-
all: adder static dynamic
1+
all: static dynamic
22

33
static:
4-
make -C adder all
4+
make -C adder clean
5+
make -C adder static
56
cd multiplier-static && cargo clean && cargo test && cargo build --release
67
rm -f demo-static
78
gcc -o demo-static main.c -L multiplier-static/target/release -lmultiplier
89
./demo-static
10+
cd go-static && go run . && cd -
911

1012
dynamic:
11-
make -C adder all
13+
make -C adder clean
14+
make -C adder dynamic
1215
cd multiplier-dynamic && cargo clean && LD_LIBRARY_PATH="`pwd`/../adder" cargo test && cargo build --release
1316
rm -f demo-dynamic
1417
LD_LIBRARY_PATH=adder gcc -o demo-dynamic main.c -lmultiplier -L multiplier-dynamic/target/release
1518
LD_LIBRARY_PATH=multiplier-dynamic/target/release:adder ./demo-dynamic
19+
cd go-dynamic && LD_LIBRARY_PATH=../multiplier-dynamic/target/release:../adder go run . && cd -
20+

interop/go-dynamic/go-dynamic.go

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
package main
2+
3+
/*
4+
#cgo CFLAGS: -I..
5+
#cgo LDFLAGS: -L../multiplier-dynamic/target/release -lmultiplier -L../adder -ladder
6+
#include "multiplier.h"
7+
*/
8+
import "C"
9+
import "fmt"
10+
11+
func main(){
12+
res := C.multiply(10, -82)
13+
fmt.Println("GO Dynamic")
14+
fmt.Println(res)
15+
}

interop/go-dynamic/go.mod

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
module go-dynamic
2+
3+
go 1.23.3

interop/go-static/go-static.go

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
package main
2+
3+
/*
4+
#cgo CFLAGS: -I..
5+
#cgo LDFLAGS: -L ../multiplier-static/target/release -lmultiplier
6+
#include "multiplier.h"
7+
*/
8+
import "C"
9+
import "fmt"
10+
11+
func main(){
12+
res := C.multiply(10, -82)
13+
fmt.Println("GO Static")
14+
fmt.Println(res)
15+
}

interop/go-static/go.mod

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
module go-static
2+
3+
go 1.23.3

0 commit comments

Comments
 (0)