assembly 用GoLink链接MinGW .a静态C库

von4xj4u  于 2022-11-13  发布在  Go
关注(0)|答案(1)|浏览(150)

我尝试用NASM和GoLink制作一个SDL 2程序,只是为了好玩,但是我无法将SDL2main.a和SDL 2链接到我的可执行文件。我使用的是win 64架构。
我的主要. 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

这是我构建.exe的方法:

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

我得到了以下错误:

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

我的静态库位于一个./lib文件夹中,如果它可以帮助。

bd1hkmkf

bd1hkmkf1#

GoLink不理解基于MinGW的工具链所创建的.a静态库文件格式。如果您打算使用GoLink,则需要获取一份可与Microsoft工具和链接器一起使用的SDL2库。
在您的情况下,您需要在download page上使用Visual C++的SDL2开发库,而不是您目前使用的MinGW库。

相关问题