SDL加载项库未正确链接

SDL Addon Libraries not Linking Correctly

本文关键字:链接 加载项 SDL      更新时间:2023-10-16

我试图将SDL_mixer、SDL_ttf和SDL_image链接到我的项目,但由于某种原因,在编译代码时会弹出这些错误。我包含的头文件取决于上面的库。我按以下顺序链接到我的库:

最小GW32OpenGL32SDLmainSDLSDL_图像SDL_ttfSDL_混合器

#include <map>
#include <string>
#include <sstream>
#include <fstream>
#include <iostream>
#include <GL/gl.h>
#include <SDL/SDL.h>
#include <SDL/SDL_opengl.h>
#include <SDL/SDL_image.h>
#include <SDL/SDL_mixer.h>
#include <SDL/SDL_ttf.h>
using namespace std;
#include "include_file.h"
#include "structure.h"
#include "player.h"
#include "healthclass.h"
#include "items.h"
#include "loadfiles.h"
#include "init_game.h"
#include "missions.h"

然后错误:

objReleasemain.o:main.cpp:(.text+0x16e): undefined reference to `Mix_LoadMUS'
objReleasemain.o:main.cpp:(.text+0x197): undefined reference to `Mix_LoadWAV_RW'
objReleasemain.o:main.cpp:(.text+0x1c0): undefined reference to `Mix_LoadWAV_RW'
objReleasemain.o:main.cpp:(.text+0x1e9): undefined reference to `Mix_LoadWAV_RW'
objReleasemain.o:main.cpp:(.text+0x7cd): undefined reference to `IMG_Load'
objReleasemain.o:main.cpp:(.text+0x996): undefined reference to `TTF_RenderUTF8_Shaded'
objReleasemain.o:main.cpp:(.text+0x20ca): undefined reference to `Mix_CloseAudio'
objReleasemain.o:main.cpp:(.text+0x20cf): undefined reference to `TTF_Quit'
objReleasemain.o:main.cpp:(.text+0x2f7b): undefined reference to `IMG_Load'
objReleasemain.o:main.cpp:(.text+0x3788): undefined reference to `TTF_Init'
objReleasemain.o:main.cpp:(.text+0x37ac): undefined reference to `Mix_OpenAudio'
objReleasemain.o:main.cpp:(.text+0x3914): undefined reference to `TTF_OpenFont'
objReleasemain.o:main.cpp:(.text+0x3983): undefined reference to `Mix_PlayMusic'
objReleasemain.o:main.cpp:(.text+0x61f0): undefined reference to `Mix_PlayChannelTimed'
objReleasemain.o:main.cpp:(.text+0x6330): undefined reference to `Mix_Playing'

我发现我正试图用SDL_image、SDL_mixer和SDL_ttf的64位版本编译32位版本的SDL。因此,在安装加载项库时,安装库文件时请使用x86文件夹而不是x64文件夹。如果你有一台64位的计算机,如果SDL是32位的,那么使用x86 lib文件夹并不重要,除非你知道你在做什么,而我没有。