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

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.22 11:06:48