utf-8 ncurses.h menu.h; glib.h

Fórumok

Ü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?

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 */

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.

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 */

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!

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.