Я пытался создать проект на C++, использующий sdl2 с premake5 в качестве системы сборки. Моей целью было просто запустить окно, используя код SDL2, предоставленный lazyfoo на SDL2:
https://lazyfoo.net/tutorials/SDL/01_he ... index2.php
Для этого я загрузил исходный код SDL2 и попытался скомпилировать его как статическую библиотеку, как описано на официальном сайте предварительной сборки:
https://premake.github.io/docs/LinkingИсточник взят из
https://github.com/libsdl-org/SDL/relea ... ase-2.30.1
, в частности из SDL2-2.30.1. zip-файл.
Я получаю неопределенную ошибку ссылки на SDL_INIT, SDL_GetError, SDL_CreateWindow и практически любую другую функцию SDL, которую я использую в своем коде.
После нескольких неудачных попыток я воспользовался этим руководством на github, чтобы в первую очередь заставить работать статическую библиотеку.
https://github.com/premake/premake-core ... ample-with -GLFW-and-OpenGL
Я удалил весь код opengl и glfw, так как мне просто хотелось заставить работать простую функцию печати. После того, как мне это удалось, я просто скопировал код и обновил его, чтобы он соответствовал каталогам и путям к файлам SDL2.
Теперь я получаю неопределенную ошибку ссылки, как описано выше.
Мой файл premake5.lua выглядит так:
workspace "Premake Test"
location "Generated"
language "C++"
architecture "x86_64"
configurations { "Debug", "Release" }
filter "configurations:Debug"
symbols "On"
filter "configurations:Release"
optimize "On"
filter { }
targetdir("Build/Bin/%{prj.name}/%{cfg.longname}")
objdir("Build/Obj/%{prj.name}/%{cfg.longname}")
project "SDL"
kind "StaticLib"
includedirs "libs/SDL2-2.30.1/include"
files "libs/SDL2-2.30.1/src/*"
function useSDL()
includedirs "libs/SDL2-2.30.1/include"
links "SDL"
end
project "TestLib"
kind "StaticLib"
files "libs/testlib/**"
function useExampleLib()
includedirs "libs/testlib"
links "TestLib"
end
project "App"
kind "WindowedApp"
files "src/**"
useSDL()
useExampleLib()
Проект SampleLib — это всего лишь моя первая попытка заставить работать общую статическую библиотеку.
Мой файл main.cpp выглядит так:#include
#include
#include "test.h"
//Screen dimension constants
const int SCREEN_WIDTH = 640;
const int SCREEN_HEIGHT = 480;
int main( int argc, char* args[] )
{
print("Wenn das klappt, dann WTF!!!");
SDL_Window *window = nullptr;
SDL_Surface *screenSurface = nullptr;
if (SDL_Init(SDL_INIT_VIDEO) < 0)
{
std::cout
Подробнее здесь: https://stackoverflow.com/questions/781 ... arch-linux
Ошибка неопределенной ссылки SDL2, использование premake5 для сборки, Arch Linux ⇐ C++
-
- Похожие темы
- Ответы
- Просмотры
- Последнее сообщение