是否可以在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 ++的链接。这里是堆栈溢出。那里有一个很好的讨论,但对我来说,收获是:
Go常见问题解答的链接(Go程序是否与C / C ++程序链接?):
... cgo程序提供了“外部函数接口”的机制,以允许从Go代码安全地调用C库。SWIG将此功能扩展到C ++库。
Go的SWIG文档的链接。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句