Добрый день.
Задался целью таки попробовать освоить SDL (
http://www.libsdl.org/index.php). Прельщает две вещи: кроссплатформенность плюс использование именно "С".
Итак, скачал исходники, чтобы получить заголовочные файлы. Скачал бинарники для win32 в виде DLL библиотеки. Однако, не всё так просто. Набрал первый тестовый код:
#include <windows.h>
#include "SDL/include/SDL.h"
int main(int argc, char *argv[])
{
return 0;
}
Собственно код как бы ничего не делает, но фишка в том, что SDL заменяет макросом main на SDL_main, а затем вставляет свою шапку WinMain в случае, если обнаруженная им при компиляции платформа является Windows.
Ладно, первое, что отвалилось:
...undefined symbol main...
и процесс не идёт...
Поковырявшись, понял, что включать собственноручно windows.h не стоит, и исключив его, дело сдвинулось дальше, однако, возникла новая ошибка:
SDL/include/SDL_platform.h:175: error: declaration for parameter '__cdecl' but no such parameter
Она ссылается на:
extern DECLSPEC const char * SDLCALL SDL_GetPlatform (void);
Как понимаю, эту функцию он берёт из DLL, к которой я сгенерировал def файл и включил его в проект. Тем не менее, не совсем понимаю что он хочет ещё?
Может кто сталкивался или есть идеи? Или я чего забыл?
tcc -LSDL/include -ISDL/include SDL2.def first_sdl.c
Добавлено через 2 минуты и 19 секунд:В принципе, можно пользоваться нужными функциями, через LoadLibrary и собственноручно написанный хедер, но хочется по людски.
Добавлено через 3 часа, 39 минут и 14 секунд:Что странно mingw это переработал:
gcc first_sdl.c -I"C:\SDL\SDL2-2.0.5\i686-w64-mingw32\include\SDL2" -L"C:\SDL\SDL2-2.0.5\i686-w64-mingw32\lib" -lmingw32 -lSDL2main -lSDL2 -o first.exe