在cgo中定义变量
我想在构建时在cgo中定义一个字符串变量。以下方法都不起作用在cgo中定义变量,go,cgo,Go,Cgo,我想在构建时在cgo中定义一个字符串变量。以下方法都不起作用 “common”未声明(首次在此函数中使用) “common”未声明(首次在此函数中使用) 格式错误的cgo参数:-DLOG=“common” 这似乎是不可能的,因为cgo进行了一些破坏/解析——您可以只使用一个普通的#定义日志“common”(即不使用cgo特殊标志)吗 或者,如果您不能像这样调用go run/go build:CGO\u CFLAGS='-DLOG=“common”'go run so.go您可以在CGO中定
这似乎是不可能的,因为cgo进行了一些破坏/解析——您可以只使用一个普通的
#定义日志“common”
(即不使用cgo特殊标志)吗
或者,如果您不能像这样调用
go run
/go build
:CGO\u CFLAGS='-DLOG=“common”'go run so.go
您可以在CGO中定义一个变量,就像在c代码中定义它一样
例如:
主程序包
/*
int initflag=2;
int GetInitFlag(){
返回初始标志;
}
*/
输入“C”
输入“fmt”
//CFlag get c标志
func CFlag()int{
值:=C.GetInitFlag()
返回int(值)
}
func main(){
fmt.Println(CFlag())
}
字符串类型必须将c中的字符*转换为字符串
//C字符串到Go字符串
func C.GoString(*C.char)字符串
#cgo CFLAGS: -DLOG="common"
#cgo CFLAGS: -DLOG=common
#cgo CFLAGS: -DLOG=\"common\"