go 调用 c++
时间: 2023-07-01 09:25:03 浏览: 167
go调用c++类接口
5星 · 资源好评率100%
Go语言可以通过CGO机制调用C/C++代码,实现Go和C/C++之间的交互。CGO是Go语言的一个重要特性,它提供了一种简单的方法,使得Go程序可以访问C/C++代码,并且还可以在Go和C/C++之间传递数据和指针。
下面是一个简单的示例,演示如何通过CGO调用C++代码:
1. 首先,我们需要编写一个C++的函数,比如:
```
#include <iostream>
extern "C" {
void say_hello() {
std::cout << "Hello, C++!" << std::endl;
}
}
```
这个函数是一个非常简单的C++函数,它输出一句话。
2. 接下来,我们需要将这个C++函数编译成动态链接库,比如:
```
g++ -shared -fPIC -o libhello.so hello.cpp
```
这个命令将会生成一个名为libhello.so的动态链接库,其中包含了我们刚刚编写的C++函数。
3. 最后,我们需要编写一个Go程序,来调用这个C++函数,比如:
```
// main.go
package main
// #cgo LDFLAGS: -L. -lhello
// #include "hello.h"
import "C"
func main() {
C.say_hello()
}
```
这个程序通过CGO机制引入了C++代码,然后调用了C++函数say_hello(),输出了一句话。
4. 最后,我们需要编译并运行这个Go程序,比如:
```
go build -o main main.go
LD_LIBRARY_PATH=. ./main
```
其中,LD_LIBRARY_PATH=.指定了动态链接库的搜索路径,./main则是运行编译后的Go程序。当我们运行这个程序时,它将会输出一句话:Hello, C++!
阅读全文