Задать вопрос
@s4k0r4
Ничто

SDL Ошибка компиляции. error LNK2019: ссылка на неразрешенный внешний символ... Как решить?

Здравствуйте, я начал изучать SDL 2.0, работая в Visual Studio, при обучении возникла ошибка

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


Исходник:
#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;
}
  • Вопрос задан
  • 2208 просмотров
Подписаться 1 Средний 7 комментариев
Пригласить эксперта
Ответы на вопрос 2
@s4k0r4 Автор вопроса
Ничто
Здесь была проблема разрядностями у библиотеки она одна а у VS другая.
Но лучше переходите на SFML он более понятен и удобен.
Ответ написан
Комментировать
@AndrewKitaev
Мое решение - Данная ошибка может быть из-за много чего, но тут надо посмотреть на одно,
Для начала мне надо узнать, подключено ли библиотека .lib?
Здесь проблема в чем, для SDL2 в Visual Studio помимо заголовочного файла, нужно еще и либ файл,
на сайте библиотеки качаем архив с файлами для разработчиков, далее, можно в папке Решения
сделать папку Libs, куда мы будем кидать .lib файлы, и в настройках проекта, в настройках линкера, нужно добавить эту папку, вот действие которые нужно выполнить :
"Настройки проекта" - "Компоновщик", и в поле "Дополнительные каталоги библиотек" добавляем
$(SolutionDir)Libs, и добавляем её в настройках компоновщика, есть пока такое решение, и не надо менять эту библиотеку на другую
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы