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

GNAT Studio 2021下AdaOpenAL第三方音频库链接错误求助

解决方案
  • 修正GPR文件错误配置:你之前填写的Compiler和Linker的Switches参数不符合GPR语法规范,gprbuild会自动处理编译命令前缀、-c这类基础参数,不需要手动填写,路径参数前也不需要加/前缀。
  • 补充OpenAL导入库链接:Windows下动态库链接需要对应导入库(.lib文件),错误中缺失的__imp_前缀符号全部来自OpenAL核心库,你需要先确认AdaOpenAL包中提供的64位版本OpenAL32.lib所在路径,在GPR中添加库目录和链接参数。
  • 确认位数匹配:你使用的是x86_64版本的GNAT 2021,需要确保所有依赖的.lib、.dll文件均为64位版本,32位二进制文件无法被64位链接器识别。

你可以参考以下修正后的GPR配置,替换路径为你本地实际路径即可:

project Knightmare is

   for Source_Dirs use ("src", "../Libs/adaOpenAL", "../Libs/adaOpenAL/OalBinding", "../Libs/adaOpenAL/OalBinding/incoal");
   -- 替换下方路径为你本地存放OpenAL32.lib的目录
   for Library_Dirs use ("../Libs/adaOpenAL/lib/x64");
   for Object_Dir use "obj";
   for Main use ("main.adb");
   for Languages use ("Ada", "C", "C++");

   package Compiler is
        for Switches ("c++") use ("-std=c++11", "-fpermissive",
                                  "-I../Libs/adaOpenAL", "-I../Libs/adaOpenAL/OalBinding", "-I../Libs/adaOpenAL/OalBinding/incoal");
   end Compiler;

   package Linker is
      -- 链接C++标准库和OpenAL导入库
      for Switches ("Ada") use ("-lstdc++", "-lOpenAL32");
   end Linker;

end Knightmare;

额外注意事项

  1. 把AdaOpenAL包中自带的OpenAL32.dll放到最终生成的main.exe同目录下,运行时需要加载该动态库。
  2. 如果还是提示找不到OpenAL库,可以把-lOpenAL32换成对应lib文件的完整绝对路径,比如"C:/xxx/OpenAL32.lib"。
  3. 原shell脚本中针对macOS的framework参数不需要在Windows下添加,-pthread参数可以直接删除,GNAT在Windows下默认使用-mthreads处理线程相关依赖。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.25 16:15:07