Üdv!
Eredeti gondom, az hogy ncruses menu.h függvényeit használnám, de azok behalnak az ékezetektől,
utf-8-as környezetben (még latin2-es környezetben nem volt gond vele). Ez csak menu.h
könyvtárak használatával jön elő.
Amerre indultam:
A glib könyvtárakban találtam ilyen függvényeket:
g_locale_to_utf8
g_locale_from_utf8
http://developer.gnome.org/doc/API/2.0/glib/glib-Character-Set-Conversi…
Ezekkel gondolom meg tudnám oldani. A probléma velük egész triviális.
Nem tudom használni a glib.h könyvtárakat. Régen használtam ilyet, és
azt is elővadásztam, hogy a fordítási paramétereket hogy tudom megadni:
gcc -o main main.c `glib-config --libs --cflags glib`
Eddig "stim"!
A importálással viszont gond van:
#include <glib.h>
Nem így kell?
Belenézve a /usr/include könyvtárba, persze nem találok glib.h,
így ez talán érthető is. Találtam glib-1.2 és glib-2.0 könyvtárakat.
Ezekben van glib.h. De ha ezeket exportálom akkor mindkét fejállomány
esetén hibaüzenet hegyeket kapok.
Ha pl. ezt írom:
<glib-2.0/glib.h>
Akkor pl. hivatkozik a állományok hiányára.
Ami persze megint érthető, mert /usr/include könyvtárban nincs glib könyvtár.
Az gánymegoldás, hogy mozgassam a /usr/inclide/glib-2.0/glib.h állományt és a
/usr/include/glib-2.0/glib könyvtárat a /usr/include könyvtárba.
Nyilván valamilyen doksit nem olvastam el. Mit nem tudok?
- 1771 megtekintés
Hozzászólások
hali
a 'glib-config --libs --cflags glib' parancs
a megfelelo utakat adja vissza?
vagy add meg kapcsolokkal a gcc-nek az eleresi utakat:
-I/inlude/allomanyok/utja
-L/libek/utja
-lglib-verzio
/* bocs az esetleges helyesirasi hidakert */
- A hozzászóláshoz be kell jelentkezni
Szia!
Nem, és azt valójában néztem is, ezért egyszerűsített Makefile-om
így néz ki (a gcc sor tördelve:
-------------------------
main: main.o gcc -o main main.o -I/usr/include/glib-2.0 -I/usr/include/glib-2.0/glib -I/usr/lib/glib-2.0/include -I/usr/lib/glib/include -L/usr/lib -lglib-2.0
-------------------------
A program maga csak ennyi:
-------------------------
#include <glib-2.0/glib.h>
main()
{
}
----------------------------
make kimenete pedig pedig ez:
----------------------------------------
cc -c -o main.o main.c
In file included from main.c:4:
/usr/include/glib-2.0/glib.h:30:26: error: glib/galloca.h: Nincs ilyen fájl vagy könyvtár
/usr/include/glib-2.0/glib.h:31:25: error: glib/garray.h: Nincs ilyen fájl vagy könyvtár
...
/usr/include/glib-2.0/glib.h:77:25: error: glib/gutils.h: Nincs ilyen fájl vagy könyvtár
make: *** [main.o] Error 1
--------------------------------
A tree /usr/include/glib-2.0 kiemenete pedig így néz ki:
/usr/include/glib-2.0 |-- glib | |-- galloca.h | |-- garray.h ... ... | |-- gutils.h | `-- gwin32.h |-- glib-object.h |-- glib.h |-- gmodule.h `-- gobject |-- gboxed.h |-- gclosure.h ... 2 directories, 74 files andras@andras-desktop:~$
------------------------------
Rövidítettem, azaz nincs a kiemenet összes állománya az idézetben.
Amit látok:
Ha importálom a <glib-2.0/glib.h> könyvtárat ebben a formában ez ok neki.
De hiányolja a fordító a glib.h-ban hivatkozott fájlokat. Azok pedig meg vannak
csak úgy ahogy hivatkozik rá úgy nem érhető el (pl): <glib/galloca.h>
Szervezzem neki újra (gányolással) a könyvtárat?
Termih
Ui: Ez most Ubuntu friss "stabil" kiadásán van. De a Debian Etch-en is ez van.
- A hozzászóláshoz be kell jelentkezni
Esetleg egy glib symlink a glib-2.0-ra?
Üdv,
Dw.
"Jegyezze fel a vádhoz - utasította Metcalf őrnagy a tizedest, aki tudott gyorsírni. - Tiszteletlenül beszélt a feljebbvalójával, amikor nem pofázott közbe."
- A hozzászóláshoz be kell jelentkezni
hali
ha
-I/usr/include/glib-2.0
-vel megadod az utat, akkor mar eleg az
#include <glib.h>
nalam(igaz ez freebsd, nincs keznel linux) igy lefordul:
gcc -Wall -I/usr/local/include/glib-2.0 -c main.c
gcc -Wall -I/usr/local/include/glib-2.0 -L/usr/local/lib -o xxx -lglib-2.0 main.o
/* bocs az esetleges helyesirasi hidakert */
- A hozzászóláshoz be kell jelentkezni
Köszönöm a válaszotokat! Nálam ugynaezzekkel nem fordul. A simlinkkel probálkoztam először.
Egyenlőre feladom. Ennél könnyebb, ha az eredeti problémát úgy oldom meg ha
magam írok egy menu-t ncursesben amely tudja utf-8-at. :O
Mert az alap ncurses tudja. Akkor meg biztosan tudok írni sajátot ...
Csak ezt el akartam kerülni. Meg jó lett volna glib-et használni.
De azt gyanítom, hogy csak kihagyhatok valamit, mert ha jól tévedek
a GTK progik is ezt használják, és azok fordulnak.
Ui: Teszteltem már a nálam rendelkezésre álló Linuxokon:
Ubuntu (jelen stabli (a fene sem tudja hogy hívják :), Debian Etch, Debian sarge.
Esetleg megkeresem a ncurses készítőit, és beszélek velük az UTF-8 problémáról.
Vagy még jobb átnézem a menu.h kódját. :)
Még egyszer köszönöm!
- A hozzászóláshoz be kell jelentkezni
Az ncurses-t nem szokás wide characterekkel használni, mert az adott karaktert annyi mezőben akarja ábrázolni, ahány bájt a karakter. Emiatt wide character supportos ncurses kell, amit debian alatt libncursesw5-nek hívnak.
- A hozzászóláshoz be kell jelentkezni
Erre két mondatra vártam. Köszönöm!!! Probléma megoldva.
András
- A hozzászóláshoz be kell jelentkezni