測試項目目錄
./ ├── cgo_test ├── sum.cpp ├── sum.h └── test.go
c++代碼 sum.cpp
#include <iostream> extern "C" { #include "sum.h" } int Sum(int a,int b) { int sum = a + b; return sum; }
cgo不能直接調用c++,將模塊的接口函數在sum.h頭文件進行定義,在sum.cpp中使用C++來重新實現這個C函數。
sum.h
int Sum(int a,int b);
c++生成靜態庫文件
g++ -c sum.cpp ar -crv libsum.a sum.o
生產靜態庫后的目錄
./ ├── cgo_test ├── libsum.a ├── sum.cpp ├── sum.h ├── sum.o └── test.go
go代碼
package main
/*
#include <stdio.h>
#include <stdlib.h>
#include "sum.h"
#cgo CFLAGS: -I.
#cgo LDFLAGS: -L. -lsum
*/
import "C"
import "fmt"
func main() {
ret := C.Sum(2,3)
fmt.Println(ret)
}
