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

Win64下NASM+GoLink链接SDL2静态库失败求助

解决Win64下NASM+GoLink链接SDL2静态库的问题

问题原因

链接命令未指定SDL2静态库的路径与库文件,导致GoLink无法找到SDL_Init、SDL_Quit等符号的定义。

解决方案

1. 调整汇编代码(可选但推荐)

由于你自定义了入口点_start而非SDL默认的WinMain,需在代码开头定义SDL_MAIN_HANDLED宏,避免SDL2main库的入口冲突:

[bits 64]
%define SDL_MAIN_HANDLED  ; 告知SDL无需处理WinMain入口

extern ExitProcess
extern SDL_Init
extern SDL_Quit

SDL_INIT_VIDEO equ 0x00000020

section .text
_start:
    mov rcx, SDL_INIT_VIDEO
    call SDL_Init

    call SDL_Quit

    xor rcx, rcx
    call ExitProcess

2. 修改链接命令

在GoLink命令中补充SDL2静态库的路径和库文件:

nasm -f win64 main.asm -o main.obj
.\GoLink.exe /console /entry _start /fo prog.exe /libpath:./lib main.obj kernel32.dll SDL2.lib SDL2main.lib

关键说明

  • /libpath:./lib:指定静态库所在的目录(你的库存放在./lib下)
  • SDL2.lib:SDL2核心功能静态库,提供SDL_Init、SDL_Quit等符号定义
  • SDL2main.lib:SDL2入口处理库,即使自定义入口点,链接它也能避免潜在依赖问题
  • 若你的静态库后缀为.a(如MinGW编译产物),需重命名为.lib,GoLink优先识别Windows格式的.lib静态库

验证

执行修改后的构建命令,若无报错即可生成prog.exe可执行文件。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.23 13:06:23