Go应用使用PortAudio绑定动态播放音频的编译问题求助
解决Go调用PortAudio时的64位编译错误及库导入问题
错误原因
你遇到的cc1.exe: sorry, unimplemented: 64-bit mode not compiled in错误,本质是当前使用的MinGW是32位版本,但你的Go环境是64位(GOARCH=amd64),导致C编译器无法处理64位编译请求。
解决方案步骤
1. 切换到64位MinGW-w64
- 卸载现有32位MinGW,下载安装MinGW-w64的64位版本(x86_64架构)
- 确保MinGW-w64的
bin目录已添加到系统环境变量PATH中,验证方式:打开命令行运行gcc -v,输出中应包含x86_64-w64-mingw32字样
2. 正确配置预编译PortAudio库
- 确保下载的portaudio预编译包是64位版本,与你的Go架构匹配
- 调整cgo配置,补充头文件路径(若头文件不在系统默认目录):
/* #cgo CFLAGS: -IC:\portaudio-binaries\include #cgo LDFLAGS: -LC:\portaudio-binaries\lib -lportaudio #include "portaudio.h" extern PaStreamCallback* paStreamCallback; */ import "C" - 将PortAudio的DLL文件(比如
libportaudio-2.dll)复制到Go可执行文件的输出目录,或添加到系统PATH,避免运行时找不到库
3. 自行编译PortAudio的正确姿势
- 用MinGW-w64编译PortAudio时,执行以下命令:
# 进入PortAudio源码目录 cd portaudio # 配置64位编译目标 ./configure --host=x86_64-w64-mingw32 # 编译 make - 编译完成后,
.libs目录下的libportaudio.dll.a是链接用的静态导入库,libportaudio.dll是运行时依赖 - 将
libportaudio.dll.a放到你的库目录,portaudio.h放到include目录,cgo配置同步骤2 - 同样需将
libportaudio.dll放到运行路径
4. 验证环境匹配
- 运行
go env GOARCH确认Go架构(amd64对应64位,386对应32位) - 确保MinGW、PortAudio库的位数与Go架构完全一致
内容的提问来源于stack exchange,提问作者forrealthough
相关产品推荐
相关产品推荐

