让我们假设我的包工作区有 github.com/yada/yada 第三方包。在这个包中有一个 yoda.go.h 头,我想重用(不确定这是否是个好主意,但这是一个新问题)。如何将依赖包中的 header 导入到我自己的包中?

package main

// #cgo pkg-config: my-dep other-dep
// #include <someHeader.h>
// #include <otherHeader.h>
// #include github.com/yada/yada/yoda.go.h // doesn't work :(
import "C"

除了是一个好主意与否之外,我仍然想知道这是否可能。

PS:如果你认为这真的是个坏主意,我该怎么办?

最佳答案

使用 CGO CFLAGS 指令来引用额外的包含路径。

//#cgo CFLAGS: -I $GOPATH/src/github.com/yada/yada/
...
//#include "yoda.go.h"
import "C"

更正 :

go 工具不会在构建期间扩展 $GOPATH 变量。相反,应该在那里使用完整路径。更正的代码:
//#cgo CFLAGS: -I /full/path/to/src/github.com/yada/yada/
//#include "yoda.go.h"

关于go - 如何在 Go 中包含来自第三方包的 header ?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/27317210/

10-15 00:56