Portál AbcLinuxu, 6. května 2025 20:13
Daniel Kozák nereaguje na mé e-maily, takže jsem se rozhodl napsat mu to do blogu.
V této diskusi jsem mu napsal chybu, kterou dostávám při kompilaci. Po sdělení, že mám ArchLinux mi napsal, že má bugovou verzi dvdread a wxgtk. Problém s dvdread opravdu je a dá se vyřešit přepsáním souborů v /usr/include/dvdread soubory z adresáře /usr/include/dvdnav. wxGTK ale bugové není. V ArchLinuxu je wxGTK zkompilováno s podporou unicode (parametr --enable-unicode
skriptu configure). Daniel pravděpodobně s wxGTK nikdy neprogramoval (já teda také ne), jinak by věděl, že pokud pracuje s tímto toolkitem, má používat makro wxT
pro textové konstanty. To však nečiní. Dále v kódu používá funkci wxString::c_str()
která ale vrací const wchar_t*
nebo const char*
v závislosti na použití unicode. A on ji prostě použije nějak takto: const char *janevimco = janevimco2.c_str()
. Správné užití je ale const char *janevimco = janevimco2.mb_str(wxConvLocal)
kde wxConvLocal je globální konvertor wxGTK.
Takže kozzi, pohrál jsem si za tebe. Nečiním si žádné nároky na spoluautorsví a přidaný kód můžeš klidně vydávat za svůj.
Tiskni
Sdílej:
Mimo to zastávám názor, že používat best practices a scm tooly vůbec je potřeba od začátku, a ne až v okamžiku, kdy to v lepším případě "přestane jít dělat ručně", v horším autor zjistí, že to, co spáchal za posledních X hodin je "úplně na nic" a začne zoufale hledat, která z kopií zdrojáků na disku je ta poslední ještě fungující
dave amd64 ~/compile/wxDVDShrink $ ./configure Running configure script for wxDVDShrink ... Checking depencies ... wxGTK (required) ... found. Depencies test OK. Generating install and uninstall scripts ... done. Generating Makefile ... done.
dave amd64 ~/compile/wxDVDShrink $ make g++ -Wall -c -o output/objs/src/analyze.o -I/usr/lib64/wx/include/gtk2-unicode-release-2.6 -I/usr/include/wx-2.6 -DGTK_NO_CHECK_CASTS -D__WXGTK__ -D_FILE_OFFSET_BITS=64 -D_LARGE_FILES -DNO_GCC_PRAGMA src/analyze.cpp In file included from /usr/include/dvdread/ifo_read.h:24, from src/analyze.cpp:24: /usr/include/dvdread/ifo_types.h:32:2: error: #error "Must include <inttypes.h> or <stdint.h> before any libdvdread header." make: *** [output/objs/src/analyze.o] Error 1
ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.