Pb GTK+ [execution] - C++ - Programmation
Marsh Posté le 22-09-2005 à 17:56:19
Effectivement, GTK est un peu pénible a mettre en oeuvre, surtout a cause de la librairie Pango qui est configurée bizaremment.
La résolution du probleme est simple en soi, mais faut la trouver!!!
tout commence a partir de l emplacement de la dll de pango (par contre je ne sais pas si c est libpangowin32-1.0-0.dll, libpangocairo-1.0-0.dll ou libpango-1.0-0.dll, mais de toute facon il faut les 3). Pango va chercher un fichier qui s appelle pango.modules qui contient l adresse des dll des polices de caractere. Et cette adresse est FORCEMENT: <emplacement de la dll>\etc\pango. Donc premiere opération:
*Creer une arborescence qui correspond a ca ! (a savoir un dossier "etc" puis un dossier "pango" ). Puis copier le fichier pango.modules dans le dossier pango ( il y a aussi un fichier pango.aliases a copier, mais apparemment ca marche sans chez moi). Manitenant a l execution du programme, c est plus la meme erreur qui arrive. Cette nouvelle erreur viens du fait que pango ne peut pas ouvrir les dll dont l adresse est mentionnée dans pango.modules . Chez moi, les adresses ressemblent a ca:
"cdevel/target/pango-1.8.2/lib/pango/1.4.0/modules/pango-arabic-fc.dll"
Deux solutions:
*la premiere, un peu gore: creer une arborescence qui correspond a ca puis copier les dlls dedans (la liste de toutes les dlls est dans pango.modules)
*la deuxieme, nettement plus propre: modifier ces adresses pour que ca soit le dossier choisit. Moi ce que j ai fait: j ai mis toutes les dlls de police dans le meme dossier que pango.modules. Ensuite j ai changé les adresses de ce dernier fichier en les suivantes:
"etc/pango/pango-arabic-fc.dll" ( cest un exemple, y a 19 adresses chez moi)
Dans ce cas, la dlls de pango va chercher dans <emplacement de la dll>/etc/modules. C est plus propre, mais c est quand meme pas super rigoureux.
Le must c est encore de mettre les dll dans la racine du programme, et tout le reste dans <emplacement de la dll>/etc/module. Comme ca, on peut faire marcher le prog sur un pc qui n a pas pango d installé.
voilaaaaaaaaaaaaaaaaaaaaaa
Marsh Posté le 22-09-2005 à 17:58:59
nei a écrit : |
vous aurez tous compris que le smiley n a rien a faire la
ca devrait etre:
"c : / devel/target/pango-1.8.2/lib/pango/1.4.0/modules/pango-arabic-fc.dll"
sans les espaces
cordialement notre
Marsh Posté le 06-06-2005 à 19:31:37
Hello all,
J'ai installé les includes & lib & bin dans VC++, je peux compiler sans problème, aucune erreur ou warning, cependant lorsque j'execute mon code, j'ai une pop-up qui s'affiche devant moi affichant ça :
** ERROR **: file shape.c: line 75 (pango_shape): assertation failed: (glyphs->num_glyphs > 0)
aborting...
Et il y a dans la fenêtre DOS .
**main.exe.2872: WARNING**: No builtin or dinamycally loaded modules were found. Pango will not work correctly. This probably means there was a error in the creation of: C:/program files/Microsoft Visual Studio/VC98/etc/pango/pango.modules
You may be able to recreate this file by running pango-querymodules.
main.exe:2872: Glib-GObject-CRITICAL **: file gobject.c line 1561 g_object_ref assertion: G_IS_OBJECT object failed
main.exe:2872: CRITICAL **: file pango-engine.c line 68 _pango_engine_shape_shape: assertion PANGO_IS_FONT font failed
Je pense aue le code est bon mais je le met quand meme :
#include <iostream>
#include <stdlib.h>
#include <gtk/gtk.h>
#define WELCOME "Welcome to TIM ! (v.0.1)"
using namespace std;
void OnDestroy(GtkWidget*, gpointer);
int main(int argc, char *argv[])
{
GtkWidget *pWindow, *pLabel;
gtk_init(&argc, &argv);
pWindow = gtk_window_new(GTK_WINDOW_TOPLEVEL);
pLabel = gtk_label_new(WELCOME);
gtk_window_set_title(GTK_WINDOW(pWindow), "Taron Instant Messenger - TIM" );
g_signal_connect(G_OBJECT(pWindow), "destroy", G_CALLBACK(OnDestroy), 0);
gtk_window_set_position(GTK_WINDOW(pWindow), GTK_WIN_POS_NONE);
gtk_window_set_default_size(GTK_WINDOW(pWindow), 285, 300);
gtk_container_add(GTK_CONTAINER(pWindow), pLabel);
gtk_widget_show_all(pWindow);
gtk_main();
return EXIT_SUCCESS;
}
void OnDestroy(GtkWidget *pWidget, gpointer pData)
{
gtk_main_quit();
}
Siouplait un petit peu d aide ca fait pas mal de temps aue j essaye #include <iostream>