I'm trying to make an SDL2 program with NASM and GoLink just for fun but I can't link SDL2main.a and SDL2 to my executable. I'm on a win64 architecture.
My main.asm
[bits 64]
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
and this is the way I build my .exe :
nasm -f win64 main.asm -o main.obj
.\GoLink.exe /console /entry _start /fo prog.exe main.obj kernel32.dll
and I get the following error :
GoLink.Exe Version 1.0.4.1 Copyright Jeremy Gordon 2002-2022 info@goprog.com
Error!
The following symbols were not defined in the object file or files:-
SDL_Init
SDL_Quit
Output file not made
My static libs are located in a ./lib folder if it can help.
GoLink doesn't understand the .a
static library file format that MinGW based tool chains create. If you intend to use GoLink, you will need to get a copy of the SDL2 library that works with the Microsoft tools and linker.
In your case you will want the SDL2 development libraries for Visual C++ on their download page rather than the MinGW libraries that you are currently using.