如何在cgo中处理错误命名的包含?

时间:2018-06-06 15:29:09

标签: go compilation cgo

我遇到了一个用C / C ++混合编写的第三方库,其中大多数头文件都有.h文件名后缀,其中.hpp后缀更合适。

使用cgo中的第三方库应该是可能的,因为它几乎不使用更高级别的C ++抽象,但是头文件需要由C ++编译器编译,否则编译过程会失败。

我可以通过强制它为C代码使用C ++编译器来使cgo工作:

env CC=g++ go build

但是当我实际开始使用来自go代码的库时,这种方法不起作用,因为cgo生成的C代码在CC设置为g ++时无法编译。如果我只使用:

生成_cgo_export.c和_cgo_export.h文件
env CC=g++ go tool cgo

然后用gcc手动编译它们,编译工作正常。

所以我的问题是关于我有什么选择告诉cgo哪些文件要编译成C ++文件,哪些文件要编译为C文件?

有没有办法专门告知cgo有关错误命名的C ++标头,并且它应该只使用C ++而不是C编译器编译那些文件?

0 个答案:

没有答案