Я борюсь со своими первыми шагами в SDL. Я хотел скомпилировать простой тестовый класс, просто включив заголовок SDL2, ничего особенного для запуска:
основной.cpp:
#include <SDL.h>
int main() {
return 0;
}
Сам main.cpp компилируется нормально: g++ -c main.cpp -ISDL/include
но как только я хочу связать его с SDL2.dll либо с машинным кодом main.o, либо напрямую, я получаю эту ошибку: g++ main.cpp -o sdl_test -I SDL/include -L SDL/lib/x64 -l SDL2 -mwindows
g++ -o test main.o -L SDL/lib/x64 -l SDL2 -mwindows
/usr/lib/gcc/x86_64-pc-cygwin/4.8.3/../../../../lib/libcygwin.a(libcmain.o): In function `main':
/usr/src/debug/cygwin-1.7.30-1/winsup/cygwin/lib/libcmain.c:39: undefined reference to `WinMain'
/usr/src/debug/cygwin-1.7.30-1/winsup/cygwin/lib/libcmain.c:39:(.text.startup+0x7e): relocation truncated to fit: R_X86_64_PC32 against undefined symbol `WinMain'
collect2: Fehler: ld gab 1 als Ende-Status zurück
Дополнительная информация: я использую Cygwin и, очевидно, g++ для компиляции кода C++. Моя ОС — Windows 7 Professional 64Bit SP 1.
Я гуглил несколько часов, но все результаты, которые я наткнулся, говорили об использовании -mwindows
для компиляции неконсольного приложения или других вещей, которые не сработали.
main
. попробуйте просто#undef main
после включения, чтобы убедиться, что это так. если да, то найдите определение в заголовках SDL, где объясняется, как они намеревались отключить это определение, и используйте этот способ SDL, чтобы отключить это дерьмо. - person Cheers and hth. - Alf   schedule 05.07.2014-mwindows
просто указывает подсистему Windows и добавляет некоторые библиотеки импорта Windows API. это не имеет ничего общего с другими вещами, которые не сработали. чтобы получить более подробное представление об этой опции для вашего компилятора, выполните-dumpspecs
и отфильтруйте mwindows. - person Cheers and hth. - Alf   schedule 05.07.2014#include <SDL.h> #undef main
по-прежнему не работает, но проблема не в заголовке. Как я уже сказал, сам файл прекрасно компилируется с заголовком, но как только я пытаюсь связать их, я получаю это исключение - person Matze   schedule 05.07.2014#undef
и добавьте аргументы кmain
, например:int main( int argc, char* argv[] )
. это хорошо работает с макросом SDL. - person Cheers and hth. - Alf   schedule 05.07.2014