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

MASM32引入stb_vorbis库时遭遇LNK2001与LNK1120错误求助

MASM32链接stb_vorbis静态库遇未解析外部符号错误

编译stb_vorbis库的操作流程

使用GCC编译单文件stb_vorbis.c,生成静态库和动态库:

gcc -c stb_vorbis.c -o stb_vorbis.obj
ar rcs stb_vorbis.lib stb_vorbis.o
g++ -shared -o stb_vorbis.dll stb_vorbis.o -W

MASM32项目中的库引用方式

  1. 自定义的stb_vorbis.inc文件内容:
stb_vorbis_decode_filename PROTO STDCALL :DWORD,:DWORD,:DWORD,:DWORD
  1. 在汇编代码中引用库:
include stb_vorbis.inc
includelib stb_vorbis.lib

项目编译脚本(makeit.bat)

ml /c /coff /I "E:\masm32" project.asm
rc res.rc
link /subsystem:CONSOLE project.obj res.res /libpath:"E:\masm32\lib" /entry:start /out:project.exe

出现的链接错误

  • 不调用stb_vorbis_decode_filename时,项目编译运行正常
  • 调用该函数后触发链接错误:
project.obj : error LNK2001: unresolved external symbol _stb_vorbis_decode_filename@16
project.exe : fatal error LNK1120: 1 unresolved externals
  • 若在汇编中改用_stb_vorbis_decode_filename调用,链接器提示__stb_vorbis_decode_filename未解析

已尝试的无效解决方案

  • 使用Erol的def2lib、dll2inc工具生成.def和.lib文件,结果仍出现相同错误
  • .def文件尝试过两种写法(带/不带下划线):
LIBRARY stb_vorbis
 EXPORTS
 "_stb_vorbis_close"
 "_stb_vorbis_decode_filename"
 (...)
  • 额外限制:dll2inc生成的无参数PROTO SYSCALL无法使用,且目标平台不支持LoadLibrary,无法通过动态加载DLL绕过问题

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.18 16:03:13