如何在本地添加SDL2头文件和lib到项目中?

问题描述 投票:0回答:1

我想了解有关 C++ (clang++) 本地项目管理的更多信息。

所以我决定编写一个简单的C++游戏,而不安装libSDL2-devel包

这是我的项目的结构:

C++_游戏/

--make.sh #我的 bash 脚本来构建项目

--来源 ----main.cpp

--标题 ----SDL2 ---------SDL.h等

--lib ----SDL2 ---------libSDL2.a ---------libSDL2main.a

--obj --bin

这是我的 make.sh 脚本:

CC="clang++ -std=c++14"
HEADERS="-I ./headers/"
LIBS="-lSDL2main -lSDL2 -L ./lib/SDL2/"
OBJ="./obj/*.o"
BIN="./bin/exec.out"

echo ">> COMPILE SOURCES"

$CC $HEADERS -c ./sources/main.cpp -o ./obj/main.o

echo ">> LINKING OBJECT FILES"

$CC $LIBS $OBJ -o $BIN

echo ">> RUN BIN"

$BIN

这是基本的 C++ 代码:

#include <iostream>
#include <SDL2/SDL.h>

int main(int argc, char **argv){

    if(SDL_Init(SDL_INIT_VIDEO) != 0)
        std::cerr << SDL_GetError() << std::endl;

    return 0;
}

当我尝试编译时,我得到:

>> COMPILE SOURCES
>> LINKING OBJECT FILES
/usr/bin/ld: ./obj/main.o : dans la fonction « main » :
main.cpp:(.text+0x1c): undefined reference to `SDL_Init'
/usr/bin/ld: main.cpp:(.text+0x2a): undefined reference to `SDL_GetError'
clang-15.0: error: linker command failed with exit code 1 (use -v to see invocation)
>> RUN BIN

知道如何修复此错误吗?

阅读 SDL2 文档 在谷歌上询问

c++ linux sdl-2
1个回答
1
投票

您从未指定链接器应在链接步骤中链接哪些对象,您只包含

HEADERS
LIBS
但不包含您的对象。

强烈建议您废弃 make.sh 脚本并学习如何使用 make 或 CMAKE

除此之外,你也永远不会使用你的

$OBJ
变量

© www.soinside.com 2019 - 2024. All rights reserved.