
c/c++ 调用golang 方法
添加这条注释的原因:在编译动态库的时候,需要添加export funxxxx,才会生成对应的头文件。3.func main() {} 需要加入main, go语言问题,没有会编译报错。查看CC 和 CXX的值,根据自己电脑环境设置c/c++ 编译器路径。1.需要引入 import “C”通过go env 查看当前环境变量。
·
c/c++ 调用golang 方法
example:
go
package main
import "C"
//export foo
func foo(a, b int) int {
return a + b
}
func main() {}
1.需要引入 import “C”
2..//export foo 添加这条注释的原因:在编译动态库的时候,需要添加export funxxxx,才会生成对应的头文件
3.func main() {} 需要加入main, go语言问题,没有会编译报错
设置go 环境变量
通过go env 查看当前环境变量
查看CC 和 CXX的值,根据自己电脑环境设置c/c++ 编译器路径
设置方式
#永久生效方式
go env -w CC=
go env -w CXX=
go env -w AR=
go env -w CGO_ENABLED=1
#临时终端生效 linux
export CC=
export CXX=
export AR=
export CGO_ENABLED=1
#windows
set CC=
set CXX=
set AR=
set CGO_ENABLED=1
在windows中碰到的问题
runtime/cgo: cgo.exe: exit status 2.
不能直接指定CC 和 CXX 的绝对路径,需要在系统的环境变量设置编译器路径
编译动态库
go build -buildmode=c-shared -o libxxx.so xxx.go
#减小动态库体积(省略符号表和调试信息,禁止生成 DWARF 调试信息)
go build -buildmode=c-shared -ldflags="-s -w" -o libxxx.so xxx.go
C/C++
#include <iostream>
#include "libxxx.h"
int main() {
std::cout << foo(10,5) << std::endl;
return 0;
}
编译
g++ main.cpp -lxxx
更多推荐
所有评论(0)