我可以在cgo中使用c ++吗?

克里斯·F

是否可以在cgo中混入某些C ++代码?

我尝试了这个:

package main
/* 
    #include <iostream>

    extern "C" void test(const char* str)
    {
        std::cout << str;
    }
*/
// #cgo CFLAGS: -x c++
// #cgo LDFLAGS: -lstdc++
import "C"

func main() {
    C.test(C.CString("Testing!!!"))
}

但是我得到这些错误:

error: 'char* CString(_GoString_)' cannot appear in a constant-exp
error: 'void test(const char*)' cannot appear in a constant-expres
error: invalid conversion from 'char* (*)(_GoString_)' to 'long long int' [-fpermissive]
error: invalid conversion from 'void (*)(const char*)' to 'long long int' [-fpermissive]

我正在使用go1.0.2和MinGW-w64 4.7.1

达山·里夫卡·惠特尔

@ephemient在Go Bug Tracker中提供了对此功能请求的链接。依次提供了指向如何在Go中使用C ++的链接这里是堆栈溢出。那里有一个很好的讨论,但对我来说,收获是:

  1. Go常见问题解答的链接(Go程序是否与C / C ++程序链接?):

    ... cgo程序提供了“外部函数接口”的机制,以允许从Go代码安全地调用C库。SWIG将此功能扩展到C ++库。

  2. Go的SWIG文档的链接

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章