我想在构建时在 cgo 中定义一个字符串变量。以下方法均无效。#cgo CFLAGS: -DLOG="common"'common' 未声明(首次在此函数中使用)#cgo CFLAGS: -DLOG=common'common' 未声明(首次在此函数中使用)#cgo CFLAGS: -DLOG=\"common\"格式错误的#cgo 参数:-DLOG="common"
2 回答
qq_遁去的一_1
TA贡献1725条经验 获得超7个赞
看起来这是不可能的,因为 cgo 做了一些修改/解析——你能逃脱正常的#define LOG "common"
(即不使用 CGO 特殊标志)。
或者失败了你可以像这样调用go run
/ go build
:CGO_CFLAGS='-DLOG="common"' go run so.go
慕斯王
TA贡献1864条经验 获得超2个赞
你可以在 cgo 中定义一个变量,就像在 c 代码中定义它一样,
例子:
package main
/*
int initflag=2;
int GetInitFlag(){
return initflag;
}
*/
import "C"
import "fmt"
// CFlag get c flag
func CFlag() int {
value := C.GetInitFlag()
return int(value)
}
func main() {
fmt.Println(CFlag())
}
字符串类型必须将 c 中的 char* 转换为字符串
// C string to Go string
func C.GoString(*C.char) string
https://golang.org/cmd/cgo/
- 2 回答
- 0 关注
- 198 浏览
添加回答
举报
0/150
提交
取消