Panel użytkownika
Nazwa użytkownika:
Hasło:
Nie masz jeszcze konta?

linkowanie statyczne plików MinGW w CodeBlocks

Ostatnio zmodyfikowano 2022-10-17 17:08
Autor Wiadomość
AP1994
Temat założony przez niniejszego użytkownika
» 2022-10-16 17:51:28
Zrobiłem tak jak radził pekfos. Wypakowałem kompilator w osobnej lokalizacji. Wersja gcc, która wyświetliła mi się w konsoli programu z komendą __VERSION__ to teraz:12.2.0
Niestety podczas kompilacji mojej gry dostałem błąd: undefined reference to `_setjmp'
Build log:

-------------- Build: Debug in platform game (compiler: GNU GCC Compiler)---------------
g++.exe -L"D:\moje programy\biblioteki\allegro-x86_64-w64-mingw32-gcc-12.1.0-posix-seh-static-5.2.8.0\lib" -o "platform game\2022-10-16 exe\platform game.exe" "platform game\2022-10-16 Debug\Collisions.o" "platform game\2022-10-16 Debug\default_creature.o" "platform game\2022-10-16 Debug\kontrolki.o" "platform game\2022-10-16 Debug\main.o" "platform game\2022-10-16 Debug\mapa.o" "platform game\2022-10-16 Debug\monster.o" "platform game\2022-10-16 Debug\player.o" "platform game\2022-10-16 Debug\Window.o"  "platform game\2022-10-16 Debug\resouce.res" -static-libstdc++ -static-libgcc -static -s  -lallegro_monolith-debug-static -ljpeg -ldumb -lwebp -lFLAC -lvorbisfile -lvorbis -logg -lphysfs -lfreetype -lpng16 -ldsound -lgdiplus -luuid -lkernel32 -lwinmm -lpsapi -lopengl32 -lglu32 -luser32 -lcomdlg32 -lgdi32 -lshell32 -lole32 -ladvapi32 -lws2_32 -lshlwapi -lpthread -lopusfile -lopus -lzlib -lmsvcrt -mwindows
d:/program files/mingw/bin/../lib/gcc/x86_64-w64-mingw32/12.2.0/../../../../x86_64-w64-mingw32/bin/ld.exe: D:\moje programy\biblioteki\allegro-x86_64-w64-mingw32-gcc-12.1.0-posix-seh-static-5.2.8.0\lib\liballegro_monolith-debug-static.a(png.c.obj): in function `_al_load_png_f':
C:/dev/allegro_winpkg/universal/allegro/addons/image/png.c:378: undefined reference to `_setjmp'
d:/program files/mingw/bin/../lib/gcc/x86_64-w64-mingw32/12.2.0/../../../../x86_64-w64-mingw32/bin/ld.exe: D:\moje programy\biblioteki\allegro-x86_64-w64-mingw32-gcc-12.1.0-posix-seh-static-5.2.8.0\lib\liballegro_monolith-debug-static.a(png.c.obj): in function `_al_save_png_f':
C:/dev/allegro_winpkg/universal/allegro/addons/image/png.c:528: undefined reference to `_setjmp'
d:/program files/mingw/bin/../lib/gcc/x86_64-w64-mingw32/12.2.0/../../../../x86_64-w64-mingw32/bin/ld.exe: D:\moje programy\biblioteki\allegro-x86_64-w64-mingw32-gcc-12.1.0-posix-seh-static-5.2.8.0\lib\liballegro_monolith-debug-static.a(jpg.c.obj): in function `load_jpg_entry_helper':
C:/dev/allegro_winpkg/universal/allegro/addons/image/jpg.c:178: undefined reference to `_setjmp'
d:/program files/mingw/bin/../lib/gcc/x86_64-w64-mingw32/12.2.0/../../../../x86_64-w64-mingw32/bin/ld.exe: D:\moje programy\biblioteki\allegro-x86_64-w64-mingw32-gcc-12.1.0-posix-seh-static-5.2.8.0\lib\liballegro_monolith-debug-static.a(jpg.c.obj): in function `save_jpg_entry_helper':
C:/dev/allegro_winpkg/universal/allegro/addons/image/jpg.c:307: undefined reference to `_setjmp'
d:/program files/mingw/bin/../lib/gcc/x86_64-w64-mingw32/12.2.0/../../../../x86_64-w64-mingw32/bin/ld.exe: D:\moje programy\biblioteki\allegro-x86_64-w64-mingw32-gcc-12.1.0-posix-seh-static-5.2.8.0\lib\libfreetype.a(sfnt.c.obj):sfnt.c:(.text+0x496): undefined reference to `_setjmp'
d:/program files/mingw/bin/../lib/gcc/x86_64-w64-mingw32/12.2.0/../../../../x86_64-w64-mingw32/bin/ld.exe: D:\moje programy\biblioteki\allegro-x86_64-w64-mingw32-gcc-12.1.0-posix-seh-static-5.2.8.0\lib\libfreetype.a(sfnt.c.obj):sfnt.c:(.text+0xbaf7): more undefined references to `_setjmp' follow
collect2.exe: error: ld returned 1 exit status
Process terminated with status 1 (0 minute(s), 0 second(s))
7 error(s), 0 warning(s) (0 minute(s), 0 second(s))
samo setjmp() udało mi sie w internecie znaleźć, ale nie wiem jakiego potrzebuje pliku lib/a
P-179722
pekfos
» 2022-10-16 18:17:38
setjmp() to biblioteka standardowa C i tu znowu wersja kompilatora jest zła. Pobierz wersję z "MSVCRT runtime" zamiast "UCRT" z winlibs.com. Dla jasności wcześniejsza wersja była wystarczająco dobra by zlinkować mój kod testowy, trzeba dodać al_init_image_addon() by zreprodukować aktualny problem.
P-179723
AP1994
Temat założony przez niniejszego użytkownika
» 2022-10-17 14:07:26
Dziękuję wreszcie działa jak, należy i kompiluje się do pliku exe.
A przy pomocy kilku funkcji:
C/C++
ALLEGRO_BITMAP * Load_PNG_Resouces( LPCSTR res )
{
   
HMODULE hModule = GetModuleHandle( NULL );
   
HRSRC hResource = FindResource( hModule, res, RT_RCDATA );
   
HGLOBAL hMemory = LoadResource( hModule, hResource );
   
DWORD dwSize = SizeofResource( hModule, hResource );
   
LPVOID lpAddress = LockResource( hMemory );
   
ALLEGRO_FILE * f = al_open_memfile( lpAddress, dwSize, "r" );
   
return al_load_bitmap_f( f, ".png" );
   
al_fclose( f );
}
ALLEGRO_FONT * Load_TTF_Resouces( LPCSTR res, int fsize )
{
   
HMODULE hModule = GetModuleHandle( NULL );
   
HRSRC hResource = FindResource( hModule, res, RT_FONT );
   
HGLOBAL hMemory = LoadResource( hModule, hResource );
   
DWORD dwSize = SizeofResource( hModule, hResource );
   
LPVOID lpAddress = LockResource( hMemory );
   
ALLEGRO_FILE * f = al_open_memfile( lpAddress, dwSize, "r" );
   
return al_load_ttf_font_stretch_f( f, ".ttf", 0, fsize, 0 );
   
al_fclose( f );
}
ALLEGRO_SAMPLE * Load_MP3_Resouces( LPCSTR res )
{
   
HMODULE hModule = GetModuleHandle( NULL );
   
HRSRC hResource = FindResource( hModule, res, RT_RCDATA );
   
HGLOBAL hMemory = LoadResource( hModule, hResource );
   
DWORD dwSize = SizeofResource( hModule, hResource );
   
LPVOID lpAddress = LockResource( hMemory );
   
ALLEGRO_FILE * f = al_open_memfile( lpAddress, dwSize, "r" );
   
return al_load_sample_f( f, ".mp3" );
   
al_fclose( f );
}
Mój program będzie 1 plikiem wykonywalnym i folderem z mapami.
P-179725
pekfos
» 2022-10-17 17:08:47
Tylko popraw te al_fclose(), bo jest nieosiągalne za returnem.
P-179729
1 2 3 4 5 « 6 »
Poprzednia strona Strona 6 z 6