为什么报告错误 “未定义参考`ADD2” 当我用CGO
问题描述:
该目录如下:
-inlcude
Test.h
-lib
libmytest.so
-src
test.go
为什么报告错误 “未定义参考`ADD2” 当我用CGO
的test.go代码如下:
package main
/*
#cgo CFLAGS : -I ../include
#cgo LDFLAGS: -L ../lib -lmytest
#include "Test.h"
*/
import "C"
func main() {
C.add2(10, 10)
}
当我使用go build test.go
时,控制台报告:#command-line-arguments /tmp/go-build168903458/command-line-arguments/_obj/test.cgo2.o:函数_cgo_9efddd4c1a4b_Cfunc_add2': rocketmq-bridge/src/cgo-gcc-prolog:42: undefined reference to
add2' collect2:error:ld返回1退出状态
答
不要CFLAGS
后添加空间,并尽量不指定文件名建筑cgo
时,即
go build
可以选择添加-x
的编译选项,然后观察编译器是否正确添加相应的文件(INCLUDE和LIB)到它的选项,即
go build -x