Go语言中,如何调用C++的dll文件

本文详细介绍了如何创建一个C++DLL,将其编译为example.dll,以及如何在Go语言中正确地导入并调用这个DLL中的HelloWorld函数,包括必要的编译步骤和代码示例。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

我将给出一个完整的示例来说明如何调用C++ DLL文件。首先,我们将创建一个简单的C++ DLL,然后编写Go代码来调用该DLL。

  1. 创建C++ DLL文件(example.cpp):
#include <iostream>

extern "C" {
    __declspec(dllexport) void HelloWorld() {
        std::cout << "Hello from C++ DLL!" << std::endl;
    }
}
  1. 编译C++代码为DLL文件:

使用MinGW编译器编译 example.cpp 文件,生成 example.dll 文件。

-Wl,–out-implib,libexample.a -Wl,–output-def,example.def
g++ -shared -o example.dll example.cpp -Wl,–out-implib,libexample.a -Wl,–output-def,example.def

其中,这段话不是必须的。直接使用下面的代码。

g++ -shared example.cpp -o example.dll
  1. .def 文件生成 .h 头文件:
pexports example.dll > example.def

这将生成 example.def 文件。您可以手动将函数声明复制到一个新的头文件 example.h 中。
只要方法名HelloWorld是正确的,第三步的pexports就不是必须的

// example.h
#ifndef EXAMPLE_H
#define EXAMPLE_H

#ifdef __cplusplus
extern "C" {
#endif

void HelloWorld();

#ifdef __cplusplus
}
#endif

#endif // EXAMPLE_H
  1. 编写Go代码调用DLL文件:

创建一个名为 main.go 的Go文件。

package main

// #include "example.h"
// #cgo LDFLAGS: -L. -lexample
import "C"

func main() {
    // 调用C++ DLL中的函数
    C.HelloWorld()
}
  1. 编译Go代码:

在命令行中执行以下命令,将Go代码编译成可执行文件。

go build -o main main.go
  1. 运行生成的可执行文件:
./main

运行后,应该会看到输出 “Hello from C++ DLL!”。

这就完成了使用Go调用C++ DLL的整个过程。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值