1

Тема: Проблема з підключенням SDL до Visual Studio 2013

Всім привіт. Лазив по інету, знайшов цікавий туторіал на хабрі, тільки там розраховують на мінімальне знання середовища розробки... На Visual Studio пишу вперше, тому зіткнувся з такою проблемою: не можу підключити бібліотеку SDL до середовища. Ішов по відеотуторіалі (https://www.youtube.com/watch?v=D-S5m-MHUbs), роблю все так само, але з'являються помилки:

Error    1    error LNK2019: unresolved external symbol _SDL_Init referenced in function _SDL_main    c:\Users\navch\documents\visual studio 2013\Projects\Project1\Project1\main.obj    Project1

Error    2    error LNK2019: unresolved external symbol _SDL_Quit referenced in function _SDL_main    c:\Users\navch\documents\visual studio 2013\Projects\Project1\Project1\main.obj    Project1

Error    3    error LNK2019: unresolved external symbol _WinMain@16 referenced in function ___tmainCRTStartup    c:\Users\navch\documents\visual studio 2013\Projects\Project1\Project1\MSVCRTD.lib(crtexew.obj)    Project1

Error    4    error LNK1120: 3 unresolved externals    c:\users\navch\documents\visual studio 2013\Projects\Project1\Debug\Project1.exe    Project1

І ще питання, чи є різниця підключення бібліотеки для Win32 та Empty Project? Бо знайшов статтю якусь, але там підключається трохи по-іншому ніж у відео.
Можливо хтось щось підкаже? Буду вдячним:)

2

Re: Проблема з підключенням SDL до Visual Studio 2013

дуже не хочеться 7 хвилин дивитись відео.

Може ви просто .lib  не підключили?

3

Re: Проблема з підключенням SDL до Visual Studio 2013

Yola написав:

дуже не хочеться 7 хвилин дивитись відео.

Може ви просто .lib  не підключили?

Підключив. SDL.lib та SDLmain.lib

4 Востаннє редагувалося -=ЮрА=- (11.11.2015 19:53:16)

Re: Проблема з підключенням SDL до Visual Studio 2013

navchalkin - цедуже поширені помилки від SDL - перед main запишить #undef main (це може здаватися дивним, аля SDL переопреділяє main тому це треба відміняти).
Від себе - не пишить з цим фрішним лайном, чим OpenGL не підходить?

5

Re: Проблема з підключенням SDL до Visual Studio 2013

Може, тим, що, по-перше, OpenGL - це стандарт, а не бібліотека; а по-друге, рівень абстракції значно нижчий?
Ну і #undef main - страшний бидлокод, який, до речі, тут нічим не допоможе. Читайте SDL FAQ, там є про це.

Що ж до проблеми - однозначно не підключені бібліотеки. Можливо, не та бітність? Яка цільова архітектура і який SDL?

6

Re: Проблема з підключенням SDL до Visual Studio 2013

#undef main

*JOKINGLY*  %)  *BRAVO*  *CRAZY* Ви зробили мій день, дякую.

Подякували: koala1

7 Востаннє редагувалося -=ЮрА=- (11.11.2015 22:39:49)

Re: Проблема з підключенням SDL до Visual Studio 2013

Я бачу що профіль з великим рейтингом не є аксіомою обізнаності...
Проте я не звик до безгрунтовних образ, тому надаю підгрунтя до своїх слів
Ось є такий собі код

#include <stdio.h>
#include <SDL.h>
#pragma comment(lib,"SDL.lib")
 
#undef main
int main()
{
    SDL_Init(SDL_INIT_VIDEO);
    system("pause");
    return 0;
}

- без #undef main він не збереться, чому?Тому що main задефайнено вглибині SDL
Надаю шапу SDL_main.h який йде у коробочці з бібілотекою

#ifndef _SDL_main_h
#define _SDL_main_h

#include "SDL_stdinc.h"

/** @file SDL_main.h
 *  Redefine main() on Win32 and MacOS so that it is called by winmain.c
 */

#if defined(__WIN32__) || \
    (defined(__MWERKS__) && !defined(__BEOS__)) || \
    defined(__MACOS__) || defined(__MACOSX__) || \
    defined(__SYMBIAN32__) || defined(QWS)

#ifdef __cplusplus
#define C_LINKAGE    "C"
#else
#define C_LINKAGE
#endif /* __cplusplus */

#define main    SDL_main

- маю надію що відповідачі теми зможуть побачити define main, видно?
Ось цей дефайн і треба прибрати (не можна організовувати точку входу з якоюсь притянутою за вуха внтрішньобібіліотечною main :

/** The application's main() function must be called with C linkage,
 *  and should be declared like this:
 *      @code
 *      #ifdef __cplusplus
 *      extern "C"
 *      #endif
 *    int main(int argc, char *argv[])
 *    {
 *    }
 *      @endcode
 */

- ось це так це бидлокод від творців SDL, який і не раджу використовувати

Post's attachments

Безымянный.png 106.3 kb, 254 downloads since 2015-11-11 

Подякували: 0xDADA11C7, leofun012

8 Востаннє редагувалося -=ЮрА=- (11.11.2015 22:42:44)

Re: Проблема з підключенням SDL до Visual Studio 2013

Нижче даю скріншот того як збирається

Ну і #undef main - страшний бидлокод, який, до речі, тут нічим не допоможе

- як то кажуть - краще один раз побачити, ніж 10 разів написати

Post's attachments

SDL.png 100.92 kb, 236 downloads since 2015-11-11 

Подякували: coder1

9 Востаннє редагувалося -=ЮрА=- (11.11.2015 22:29:48)

Re: Проблема з підключенням SDL до Visual Studio 2013

А також люб'язно надаю проект. Дістрибутив SDL можна знайти за посиланням
https://www.libsdl.org/download-1.2.php

Post's attachments

SDL_proj.zip 155.82 kb, 281 downloads since 2015-11-11 

10 Востаннє редагувалося -=ЮрА=- (11.11.2015 22:41:38)

Re: Проблема з підключенням SDL до Visual Studio 2013

по-перше, OpenGL - це стандарт

- насмішив дякую, на майбутнє : OpenGL - це один з перших фреймворків для організації векторної графіки, згідно з вашими словами GDI та GDI+ теж стандарти=)

koala а вам відома наприклад SVG графіка, DirectX, а працювали з freetype чи mupdf чи fitz мені трішки цікаво?

11

Re: Проблема з підключенням SDL до Visual Studio 2013

-=ЮрА=- написав:

насмішив дякую

Не дякуйте, ось деякі реалізації стандарту:
https://www.opengl.org/documentation/implementations/

-=ЮрА=- написав:

koala а вам відома наприклад SVG графіка, DirectX мені трішки цікаво?

Я вам більше скажу - мені відомо, де треба великі літери, коми і теги quote ставити.

Подякували: coder1

12 Востаннє редагувалося -=ЮрА=- (11.11.2015 22:47:13)

Re: Проблема з підключенням SDL до Visual Studio 2013

Я вам більше скажу - мені відомо, де треба великі літери, коми і теги quote ставити.

- то візміть відкрийте ваше посилання, та прочтіть перший же абзац

OpenGL v1.1 ships as part of Win32. The OpenGL v1.1 libraries are also available as the self-extracting archive file from the Microsoft Site via HTTP or FTP. Hardware vendors can write OpenGL 1.5 drivers using the existing OpenGL 1.1 DDK today.

koala - навіть не питайтесь мене "потролити", поки що ви сіли в калюжу з вашим, "не допоможе2, та більше з вашим "OpenGL стандарт", не раджу продовжувати бо читаючим ці пости обізнаним людям буде смішно ще більше.
Зауважу : Я, на відміну від вас зайшов у тему допомогти а не з думкою як когось принизити.

Подякували: coder1

13 Востаннє редагувалося -=ЮрА=- (11.11.2015 22:52:22)

Re: Проблема з підключенням SDL до Visual Studio 2013

Я навіть зрозумів звідки ви вирвали фразу стандарт -

Apple ships OpenGL as a standard feature of the Mac OS

, я бачу у вас недуже з англійською, що ж там написано що OpenGL являє собою одну з стандартних можливостей (хочите на жаргоні - "являє собою одну з фіч", які супортяться макосю). На все добре, та не ображайтесь на мене - почали ви, та ще з недостатніми знаннями по тематиці.

Подякували: coder1

14

Re: Проблема з підключенням SDL до Visual Studio 2013

І подивіться, які помилки в navchalkin, а які у вас. Бачите різницю? Правильно - ви просто створили проект не того типу, і у вас не знайдено _main. А в navchalkin - нема _SDL_Init. Який ви прямо викликаєте, замість того, щоб скористатися тим способом виклику, який передбачено авторами бібліотеки (а ще - не викликаєте передбачене авторами очищення після роботи).
І так, кросплатформенні бібліотеки потребують певних компромісів. Якщо ви хочете, щоб обов'язково викликалися дві функції - одна перед main, а інша після, причому як в C, так і в C++, в купі різних компіляторів - то це рішення ще виглядає не найгіршим.

Подякували: quez, coder2

15 Востаннє редагувалося koala (11.11.2015 23:39:19)

Re: Проблема з підключенням SDL до Visual Studio 2013

Ні, я це взяв звідси:
What is OpenGL?
OpenGL stands for Open Graphics Library. It is a specification of an API for rendering graphics, usually in 3D. OpenGL implementations are libraries that implement the API defined by the specification.
Ну добре, не "стандарт", погоджуюся. Специфікація, опис, технічні характеристики - так легше?

Подякували: coder1

16

Re: Проблема з підключенням SDL до Visual Studio 2013

-=ЮрА=-
Я не збирався вас ображати, але од самої думки про таке люте збочення (незалежно від моєї обізнаності в цьому) мені стає смішно. Коли я читаю мани х86 архутектури, то мені інколи смішно стає, а інколи гидко.

Подякували: coder1

17

Re: Проблема з підключенням SDL до Visual Studio 2013

Що ви наїхали на Юру? Я наприклад також пишу ubdef часто.

18 Востаннє редагувалося coder (12.11.2015 01:22:37)

Re: Проблема з підключенням SDL до Visual Studio 2013

0xDADA11C7 написав:

-=ЮрА=-
Я не збирався вас ображати, але од самої думки про таке люте збочення (незалежно від моєї обізнаності в цьому) мені стає смішно. Коли я читаю мани х86 архутектури, то мені інколи смішно стає, а інколи гидко.

То не читайте мани. Для чого читате те що гидко? Я коли читаю мани айдронного колайдера то також іноді чогось не розумію але згодом все доходить і стає на своє місце.

19 Востаннє редагувалося 0xDADA11C7 (12.11.2015 01:47:18)

Re: Проблема з підключенням SDL до Visual Studio 2013

Та ні, мені цілком зрозуміла логіка розробників архітектури та зміст манів, проте х86 архітектура в деталях часто огидна, а моя справа спочатку розібратися в деталях, а потім створити шар додатковий абстракції і закопати ті деталі поглибше.

Подякували: koala, coder2

20

Re: Проблема з підключенням SDL до Visual Studio 2013

Ну ви як автентичний і еталонний оопіст усе хочете покритвати шаром абстракції). А мені інколи так хочеться вульгарної низькорівневості що читаю ман поки не побачу схему транзистора.