2012-07-10 60 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

相關問題