2012-07-10 159 views
4

是否可以在cgo中混入一些C++代码?我可以在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

+2

http://code.google.com/p/go/issues/detail?id=1476 – ephemient 2012-07-10 05:19:55

回答

7

@ephemient提供在Go bug跟踪器中链接到此功能请求。这反过来提供了一个链接回到How to use C++ in Go?在这里堆栈溢出。有一个很好的讨论,在那里,但对我来说外卖是:

  1. 到围棋FAQ链接(Do Go programs link with C/C++ programs?):

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

  2. 链接到The SWIG documentation for Go

相关问题