3

私のパッケージワークスペースにgithub.com/yada/yadaサードパーティのパッケージがあるとしましょう。このパッケージ内には、yoda.go.h再利用したいヘッダーがあります (それが良いアイデアかどうかはわかりませんが、それは穴の新しい質問です)。依存パッケージから自分のパッケージにヘッダーをインポートするにはどうすればよいですか?

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: 本当に悪い考えだと思うなら、代わりにどうすればいいですか?

4

2 に答える 2

3

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"
于 2014-12-05T17:29:10.627 に答える
1

これはエクスポートされたエンティティではなく、変更または削除される可能性があるため、直接参照することはお勧めできません。

そのヘッダーが本当に必要な場合は、ローカル ファイルシステムで直接参照する必要があります。(もちろん、プロジェクトに自由にコピーすることもできます)

于 2014-12-05T13:45:58.383 に答える