go - 如何在 Go 中包含来自第三方包的 header ?

标签 go header include cgo

假设我的包工作区有 github.com/yada/yada 第三方包。在这个包中有一个 yoda.go.h header ,我想重用(不确定这是否是个好主意,但这是一个新问题)。如何将依赖包中的 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/

相关文章:

Golang 1.8 plugin.Lookup 只加载第一个插件

Golang : How to use vgo? 错误: "cannot find package"

json - 带有 json 接口(interface)的结构

php - 一种在没有 header(Location : somefile. php) 且没有 ob_start() 的 PHP 中重定向的方法?

c - C 中的数学函数

javascript - jquery addClass/removeClass 不适用于 header

android - 如何将约束布局包含到另一个约束布局并在每个约束布局之间设置约束

Go 函数创建泛型类型的新指针或新值

html - Laravel Blade @include .html文件

c++ - C++ 的 Linux 引用?