Go语言中,如何调用C++的dll文件
在Go中调用C++的DLL需要使用cgo,并且需要创建适当的C语言包装接口。以下是一个简单的例子:
首先,假设你有一个C++的DLL文件 example.dll
,其中有一个函数 int Add(int a, int b)
你想要从Go中调用。
- 创建一个C++头文件
example.h
:
// example.h
extern "C" {
__declspec(dllexport) int Add(int a, int b);
}
- 编写C++源文件
example.cpp
实现这个函数:
// example.cpp
#include "example.h"
int Add(int a, int b) {
return a + b;
}
- 编译这个DLL文件。
- 在Go代码中使用cgo调用DLL中的函数:
package main
/*
#cgo CXXFLAGS: -g -O2 -std=c++11
#cgo LDFLAGS: -L. -lexample
#include <stdlib.h>
extern int Add(int a, int b);
int GoAdd(int a, int b) {
return Add(a, b);
}
*/
import "C"
import (
"fmt"
)
func main() {
result := C.GoAdd(C.int(5), C.int(3))
fmt.Printf("5 + 3 = %d\n", result)
}
确保你的环境能够找到DLL文件,并且在调用时正确地设置了编译器和链接器的标志。
注意:这个例子假设你的DLL和Go代码在同一个目录下。根据你的实际情况,你可能需要修改编译器和链接器的标志来指定DLL文件的正确位置。
评论已关闭