A
A
Andrey Onkhor2018-11-22 21:02:32
C++ / C#
Andrey Onkhor, 2018-11-22 21:02:32

SDL Compile error. error LNK2019: Unresolved external symbol reference... How to solve?

Hello, I started learning SDL 2.0 while working in Visual Studio, I got an error while learning
Error:

1>main.obj : error LNK2019: ссылка на неразрешенный внешний символ _SDL_GetError в функции "int __cdecl SDL_main(int,char * * * const)" ([email protected]@[email protected])
1>main.obj : error LNK2019: ссылка на неразрешенный внешний символ _SDL_RWFromFile в функции "int __cdecl SDL_main(int,char * * * const)" ([email protected]@[email protected])
1>main.obj : error LNK2019: ссылка на неразрешенный внешний символ _SDL_FreeSurface в функции "int __cdecl SDL_main(int,char * * * const)" ([email protected]@[email protected])
1>main.obj : error LNK2019: ссылка на неразрешенный внешний символ _SDL_LoadBMP_RW в функции "int __cdecl SDL_main(int,char * * * const)" ([email protected]@[email protected])
1>main.obj : error LNK2019: ссылка на неразрешенный внешний символ _SDL_CreateWindow в функции "int __cdecl SDL_main(int,char * * * const)" ([email protected]@[email protected])
1>main.obj : error LNK2019: ссылка на неразрешенный внешний символ _SDL_DestroyWindow в функции "int __cdecl SDL_main(int,char * * * const)" ([email protected]@[email protected])
1>main.obj : error LNK2019: ссылка на неразрешенный внешний символ _SDL_CreateRenderer в функции "int __cdecl SDL_main(int,char * * * const)" ([email protected]@[email protected])
1>main.obj : error LNK2019: ссылка на неразрешенный внешний символ _SDL_CreateTextureFromSurface в функции "int __cdecl SDL_main(int,char * * * const)" ([email protected]@[email protected])
1>main.obj : error LNK2019: ссылка на неразрешенный внешний символ _SDL_RenderClear в функции "int __cdecl SDL_main(int,char * * * const)" ([email protected]@[email protected])
1>main.obj : error LNK2019: ссылка на неразрешенный внешний символ _SDL_RenderCopy в функции "int __cdecl SDL_main(int,char * * * const)" ([email protected]@[email protected])
1>main.obj : error LNK2019: ссылка на неразрешенный внешний символ _SDL_RenderPresent в функции "int __cdecl SDL_main(int,char * * * const)" ([email protected]@[email protected])
1>main.obj : error LNK2019: ссылка на неразрешенный внешний символ _SDL_DestroyTexture в функции "int __cdecl SDL_main(int,char * * * const)" ([email protected]@[email protected])
1>main.obj : error LNK2019: ссылка на неразрешенный внешний символ _SDL_DestroyRenderer в функции "int __cdecl SDL_main(int,char * * * const)" ([email protected]@[email protected])
1>main.obj : error LNK2019: ссылка на неразрешенный внешний символ _SDL_Delay в функции "int __cdecl SDL_main(int,char * * * const)" ([email protected]@[email protected])
1>main.obj : error LNK2019: ссылка на неразрешенный внешний символ _SDL_Init в функции "int __cdecl SDL_main(int,char * * * const)" ([email protected]@[email protected])

Source:
#include <iostream>
#include <SDL.h>
using namespace std;

int main(int argc, char* argv[])
{
  
  if (SDL_Init(SDL_INIT_EVERYTHING) != 0) {
  
    cout << "SDL_Init ERROR:" << SDL_GetError() << endl;
    return 1;
  }

  SDL_Window *win = SDL_CreateWindow("Window this is Window", 100, 100, 640, 480, SDL_WINDOW_SHOWN);
  
  if (win == nullptr)
  {

    cout << "SDL_CreateWindow ERROR: " << SDL_GetError() << endl;
    return 1;
  }

  SDL_Renderer *ren = SDL_CreateRenderer(win, -1, SDL_RENDERER_ACCELERATED | SDL_RENDERER_PRESENTVSYNC);

  if (ren == nullptr)
  {
    cout << "SDL_CreateRenderer ERROR: " << SDL_GetError() << endl;
    return 1;
  }

  SDL_Surface *bmp = SDL_LoadBMP("../Sprites/helloworld.bmp");

  if (bmp == nullptr) 
  {
    cout << "SDL_LoadBMP ERROR: " << SDL_GetError() << endl;
    return 1;
  }

  SDL_Texture *tex = SDL_CreateTextureFromSurface(ren, bmp);
  SDL_FreeSurface(bmp);

  if (tex == nullptr)
  {
    cout << "SDL_CreateTextureFromSurface ERROR: " << SDL_GetError() << endl;
    return 1;
  }

  SDL_RenderClear(ren);
  SDL_RenderCopy(ren, tex, NULL, NULL);
  SDL_RenderPresent(ren);

  SDL_Delay(2000);

  SDL_DestroyTexture(tex);
  SDL_DestroyRenderer(ren);
  SDL_DestroyWindow(win);

  SDL_Quit();

  return 0;
}

Answer the question

In order to leave comments, you need to log in

1 answer(s)
A
Andrey Onkhor, 2018-12-04
@s4k0r4

Here there was a problem with bit depths for the library, it is one and for VS it is different.
But it is better to switch to SFML, it is more understandable and convenient.

Didn't find what you were looking for?

Ask your question

Ask a Question

731 491 924 answers to any question