SDL Linker Errors

The following code is pretty simple. It just draws an image on the screen with the background using the SDL. The program that I was able to run before the hand did an excellent job referred to everything without problems.

Now, however, the compiler is complaining.

Anyway, here is the code:

#include <iostream> #include <string> #include "SDL/SDL.h" const int SCREEN_WIDTH = 640; const int SCREEN_HEIGHT = 480; const int SCREEN_BPP = 32; using std::string; SDL_Surface * load_image(std::string filename) { SDL_Surface * loadedImage = NULL; SDL_Surface * optimizedImage = NULL; loadedImage = SDL_LoadBMP(filename.c_str()); if (loadedImage != NULL) { optimizedImage = SDL_DisplayFormat(loadedImage); SDL_FreeSurface(loadedImage); } return optimizedImage; } void apply_surface(int x, int y, SDL_Surface * source, SDL_Surface * destination) { SDL_Rect offset; //Give offsets to the rectangle offset.x = x; offset.y = y; SDL_BlitSurface(source, NULL, destination, &offset); } int main(int argc, char * args[]) { if ( SDL_Init(SDL_INIT_EVERYTHING) == -1 ) { return 1; } else { SDL_Surface * screen = SDL_SetVideoMode(SCREEN_WIDTH, SCREEN_HEIGHT, SCREEN_BPP, SDL_SWSURFACE); if (screen == NULL) { return 1; } else { SDL_WM_SetCaption("Hello World", NULL); SDL_Surface * message = load_image("hello.bmp"); SDL_Surface * background = load_image("background.bmp"); apply_surface(0, 0, background, screen); apply_surface(320, 0, background, screen); apply_surface(0, 240, background, screen); apply_surface(320, 240, background, screen); if (SDL_Flip( screen ) == -1) { return 1; } } } return 0; } 

And my conclusion:

 holland@holland-litevision :~/code/cpp$ g++ main.o main.o: In function `load_image(std::basic_string<char, std::char_traits<char>, std::allocator<char> >)': main.cpp:(.text+0x2b): undefined reference to `SDL_RWFromFile' main.cpp:(.text+0x3b): undefined reference to `SDL_LoadBMP_RW' main.cpp:(.text+0x4f): undefined reference to `SDL_DisplayFormat' main.cpp:(.text+0x5d): undefined reference to `SDL_FreeSurface' main.o: In function `apply_surface(int, int, SDL_Surface*, SDL_Surface*)': main.cpp:(.text+0x97): undefined reference to `SDL_UpperBlit' main.o: In function `main': main.cpp:(.text+0xaf): undefined reference to `SDL_Init' main.cpp:(.text+0xe7): undefined reference to `SDL_SetVideoMode' main.cpp:(.text+0x110): undefined reference to `SDL_WM_SetCaption' main.cpp:(.text+0x24c): undefined reference to `SDL_Flip' collect2: ld returned 1 exit status 
+4
source share
1 answer

You do not link in the SDL library. Try the following:

 g++ main.o `sdl-config --libs` 
+6
source

Source: https://habr.com/ru/post/1369349/


All Articles