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

Chr*_*s_F 6 c++ go cgo

是否可以在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!!!"))
}
Run Code Online (Sandbox Code Playgroud)

但我得到这些错误:

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]
Run Code Online (Sandbox Code Playgroud)

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

Dar*_*tle 10

@ephemient在Go bug跟踪器中提供了此功能请求的链接.这又提供了一个链接回到如何在Go中使用C++?这里是Stack Overflow.那里有一个很好的讨论,但对我来说的好处是:

  1. Go FAQ的链接(Do Go程序与C/C++程序链接?):

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

  2. Go的SWIG文档链接.