You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Windows10下Go编译c-shared库报could not determine kind of name for C.free如何解决

问题解决方法

1. 修复cgo语法错误

cgo要求导入C包的语句必须紧接在cgo注释之后,两者之间不能存在任何空行,你当前代码中#include <stdlib.h>的注释和import "C"之间的空行会导致cgo无法识别头文件导入声明,等同于未引入stdlib.h,这是报错的核心原因。
修正后的代码示例:

package main

import (
	"fmt"
	"unsafe"
)

/*
#include <stdlib.h>
*/
import "C"

//export FreeMemory
func FreeMemory(pointer unsafe.Pointer) {
	C.free(pointer)
}

同时建议将入参直接声明为unsafe.Pointer,避免不必要的类型转换风险。

2. 检查Windows编译环境配置

  • 确认已安装与Go版本架构匹配的MinGW-w64环境:64位Go对应64位MinGW-w64,32位Go对应32位MinGW-w64,不要使用TDM-GCC等非官方衍生版本
  • 确保MinGW-w64的bin目录已添加到系统PATH环境变量,执行gcc -v可验证环境是否生效
  • 确认编译时已开启CGO:Windows部分Go版本默认CGO_ENABLED=0,需要手动开启

3. 补充编译命令参数

编译时可显式指定gcc路径避免环境冲突,示例命令:

set CGO_ENABLED=1
set CC=x86_64-w64-mingw32-gcc
go build --buildmode=c-shared -o main.dll

内容的提问来源于stack exchange,提问作者Sam

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.07 00:15:02