go 调用winapi_如何在go中调用windows api-Go语言中文社区

本文介绍了如何在Go中调用Windows API,包括cgo环境配置、C++编译器参数、C导出函数头文件、Go语言中数值类型与C语言数据类型对应、内存模型等。通过一个简单的示例展示了如何调用API杀掉指定进程。

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

1、cgo环境搭建

初入go坑,记录一次工作中需要封装windows api 的过程。既然是go调用C++那么首先要配置cgo的环境了。要使用CGO特性,需要安装C/C++构建工具链,在macOS和Linux下是要安装GCC,在windows下是需要安装MinGW工具。同时需要保证环境变量CGO_ENABLED被设置为1,这表示CGO是被启用的状态。在本地构建时CGO_ENABLED默认是启用的,当交叉构建时CGO默认是禁止的。比如要交叉构建ARM环境运行的Go程序,需要手工设置好C/C++交叉构建的工具链,同时开启CGO_ENABLED环境变量。然后通过import "C"语句启用CGO特性。

由于mingw官方下载地址被墙,网上很多版本有问题,有的不能引用C库,有的找不到系统函数导出lib,这里推荐大家参考“如何优雅地配置 Windows 环境下的 MSys2 + Git 开发环境?”这篇博客,MSys2在配置好清华大学的镜像地址后,工具包升级安装飞快。

2、cgo基础知识点

a) C编译器配置

#cgo CFLAGS: -I./number

b) C++ 编译器参数配置

#cgo CXXFLAGS: -std=c++11

c) 引入第三方库

#cgo LDFLAGS: -L${SRCDIR}/number -lnumber

C头文件检索目录可以是相对目录,但是库文件检索目录则需要绝对路径

d) C导出函数头文件

//#include "number.h"

e) Go语言中数值类型和C语言数据类型对应关系

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值