Danke für die Antwort.
Leider kenne ich schon. Bei mir lässt sich der Code nicht compiliert, keine config.h vorhanden. Anscheinend ist das nur ein Teil von dem ganzen gtk-demo.
Der Punkt ist aber es ist zu gross und zu kompliziert um daraus zu lernen.
Momentan bin ich so weit gekommen:
/*gcc drawing_area.c -o drawing_area `gtk-config --cflags --libs`*/
#include <gtk/gtk.h>
int main( int argc, char *argv[] )
{
GtkWidget *window;
GtkWidget *drawing_area;
GdkDrawable *drawable;
GdkGC *gc;
gtk_init( &argc, &argv );
window = gtk_window_new( GTK_WINDOW_TOPLEVEL);//
gtk_window_set_default_size(GTK_WINDOW(window), 400, 200);
//Warum kommt hier: Gdk-CRITICAL **: file gdkgc.c: line 51
//(gdk_gc_new_with_values):assertion `window != NULL' failed.
gc = gdk_gc_new(window -> window);
//.............
gtk_container_add( GTK_CONTAINER( window ), drawing_area );
gtk_widget_show_all(window);
gtk_main();
return 0;
}
Laut jeder Quelle ist dieser Code richtig dennoch kommt der Fehler. Wieso ?
habe neulich mal eine e17 beta ausprobiert. Wirklich schnell und flüssig animiert, aber irgendwie wars das auch. Wozu braucht man denn 10 verschiedene Schattentypen für seine Fenster... Irgendwann schaltet man doch ohnehin jedes optische Gimmik aus weils nur noch nervt
Abgesehen davon habe ich mir Sawfish mittlerweile so sehr auf eine, recht individuelle, Bedienung zurecht gescriptet, dass ich mit keinem anderen WM mehr zufrieden sein kann. Auch irgendwie unpraktisch, aber nu is zu spät
#ifdef braucht man dafür auch nicht.
Statt windows.h, linux.h usw. gibst du dem header einen gemeinsamen Namen, zb. os.h, und den inkludierst du überall.
Dann machst du Unterordner windows, linux und tust dort die jeweiligen os.h-header rein.
Im Makefile dann mit gcc -I$(TARGET) kompilieren und TARGET entsprechend dem Verzeichnis wo der Header drinliegt setzen.
Auf die Weise kannst du auch gleich die cpp-Dateien mitkompilieren, einfach mit g++ $(TARGET)/bla.cpp
jetzt hab ich aber doch noch ein Problem.
ich erstelle mein struct jetzt so:
int size = = sizeof(struct pppoe_hdr) + strlen(ac_name) + 2*sizeof(struct pppoe_tag);
struct pppoe_hdr *pppoeh = malloc(size);
struct pppoe_tag *pppoetag;
pppoeh->code = PADS_CODE;
pppoeh->ver = 1;
pppoeh->type = 1;
pppoeh->sid = rand()*0x100+rand();
pppoeh->length = htons(iov[i].iov_len - sizeof(struct pppoe_hdr));
pppoetag = pppoeh+1; // !!!
pppoetag->tag_type = PTT_AC_NAME;
pppoetag->tag_len = htons(strlen(ac_name));
strcpy(pppoetag->tag_data, ac_name);
pppoetag = pppoetag + strlen(ac_name)/2 - 1; // !!!
pppoetag->tag_type = PTT_SRV_NAME;
Die zwei mit Ausrufezeichen gekennzeichneten Zeilen sind mein Problem.
Ich krieg es irgendwie nicht hin, diese stellen zu berechnen.
Ich habe schon versucht den ersten tag mit
pppoeh->tag[0] anzusprechen. Das geht auch.
Aber pppoe->tag[1] zeigt nicht auf die richtige Adresse (wohl da der Speicherbereich ac_name nicht beachtet wird)
Könnt ihr mir nochmal helfen?
Tschö
Manuel
Ponto schrieb:
Ein Lauf unter valgrind.
danke
ich kann es zwar noch nicht wirklich einsetzen aber die fehler konnte ich auch so finden
der nachteil wenn man auf testing entwickelt und das programm auf stable verwenden will ist wohl das stable viel weniger fehler verzeiht
Dieser Thread wurde von Moderator/in HumeSikkins aus dem Forum C++ in das Forum Linux/Unix verschoben.
Im Zweifelsfall bitte auch folgende Hinweise beachten:
C/C++ Forum :: FAQ - Sonstiges :: Wohin mit meiner Frage?
Dieses Posting wurde automatisch erzeugt.
Zuerst musst Du Dein Quelltext normal kompilieren, jedoch mit dem Compiler-Flag -fPIC Dieses Flag heisst auf gut Deutsch positionsunabhängiger Code. Dadurch kann der Code an jede beliebige Adresse gelinkt und geladen werden.
z.B. gcc -fPIC -Wall -c foo.c
Linken musst Du dann deine Objektdatei mit
gcc -shared -Wl,-soname libfoo.so -o libfoo.so.1.0.0 foo.o -lc
Das Flag -Wl leitet die folgende Anweisung an den Linker weiter. soname libfoo.so ist der symbolische Name der Bibliothek, -o ist der Name der Bibliothek.
Kopiert man nämlich die Lib in ein Verzeichnis, das irgendwo im LIBPATH (oder so) vorkommt, kann man mit ldconfig den zugehörigen Link, in diesem Fall libfoo.so automatisch erzeugen lassen. Die Versionsnummer 1.0.0 ist von mir nur beispielhaft.
Hallo Leute,
ich habe folgendes Problem. Ich moechte gerne in meinem Projekt libgii verwenden.
Also habe ich die Header-Dateien mit #include eingebunden und meine configure.in angepasst (verwende KDevelop).
Wenn ich nun versuche mein Projekt zu kompillieren, bekomme ich folgende Meldungen vom configure-Script
checking ggi/gii.h usability... yes
checking ggi/gii.h presence... yes
checking for ggi/gii.h... yes
checking ggi/input/xwin.h usability... no
checking ggi/input/xwin.h presence... yes
configure: WARNING: ggi/input/xwin.h: present but cannot be compiled
configure: WARNING: ggi/input/xwin.h: check for missing prerequisite headers?
configure: WARNING: ggi/input/xwin.h: see the Autoconf documentation
configure: WARNING: ggi/input/xwin.h: section "Present But Cannot Be Compiled"
configure: WARNING: ggi/input/xwin.h: proceeding with the preprocessor's result
configure: WARNING: ggi/input/xwin.h: in the future, the compiler will take precedence
configure: WARNING: ## ------------------------------------------ ##
configure: WARNING: ## Report this to the AC_PACKAGE_NAME lists. ##
configure: WARNING: ## ------------------------------------------ ##
checking for ggi/input/xwin.h... yes
checking for giiInit in -lgii... yes
und diese hier vom Compiler:
if g++ -DHAVE_CONFIG_H -I. -I/home/apollon/Documents/simple/src
-I.. -DGCC_3_1 -DEXT_HASH -I/usr/include/OGRE -O0 -g3 -MT Application.o
-MD -MP -MF ".deps/Application.Tpo" -c -o Application.o /home/apollon/Documents/simple/src/Application.cpp;
then mv -f ".deps/Application.Tpo" ".deps/Application.Po"; else rm -f ".deps/Application.Tpo"; exit 1; fi
In file included from /usr/include/ggi/input/xwin.h:31,
from /home/apollon/Documents/simple/src/Application.cpp:10:
/usr/include/X11/Xlib.h:233: error: 'Font' is used as a type, but is not defined as a type.
/usr/include/X11/Xlib.h:339: error: 'Cursor' is used as a type, but is not defined as a type.
/usr/include/X11/Xlib.h:511: error: syntax error before `*' token
/usr/include/X11/Xlib.h:1041: error: 'Font' is used as a type, but is not defined as a type.
/usr/include/X11/Xlib.h:1065: error: 'Font' is used as a type, but is not defined as a type.
/usr/include/X11/Xlib.h:1077: error: 'Font' is used as a type, but is not defined as a type.
/usr/include/X11/Xlib.h:1562: error: syntax error before `(' token
/usr/include/X11/Xlib.h:1571: error: syntax error before `(' token
/usr/include/X11/Xlib.h:1580: error: syntax error before `(' token
/usr/include/X11/Xlib.h:1584: error: syntax error before `(' token
/usr/include/X11/Xlib.h:2037: error: type specifier omitted for parameter ` Cursor'
/usr/include/X11/Xlib.h:2238: error: type specifier omitted for parameter ` Cursor'
/usr/include/X11/Xlib.h:2539: error: type specifier omitted for parameter ` Cursor'
/usr/include/X11/Xlib.h:2711: error: type specifier omitted for parameter ` Cursor'
/usr/include/X11/Xlib.h:2740: error: type specifier omitted for parameter ` Cursor'
/usr/include/X11/Xlib.h:2776: error: syntax error before `(' token
/usr/include/X11/Xlib.h:3065: error: type specifier omitted for parameter ` Cursor'
/usr/include/X11/Xlib.h:3222: error: type specifier omitted for parameter `Font '
/usr/include/X11/Xlib.h:3501: error: type specifier omitted for parameter `Font '
make[2]: *** [Application.o] Error 1
Ich vermute, dass ich die Xlib auch reinlinken muss, allerdings wess ich nicht wie man das macht. Waere fuer Hilfe sehr dankbar.
Sonst entfern mal die XF86Config-4 (und wenn vorhanden auch XF86Config und ähnliche Dateien, ich hatte damit mal Probleme, dass von der falschen Config Datei gelesen wurde) [Aber mach ein Backup der Dateien, also am besten einfach mit mv in ein Backup Verzeichniss verschieben]. Dann starte mal xf86cfg.
Ein Auszug aus den mount Man Pages:
uid=value, gid=value and umask=value
Set the file permission on the filesystem. The umask value is
given in octal. By default, the files are owned by root and not
readable by somebody else.
Also setzt zu z.B.
/dev/sda1 /mnt/usb ntfs ro,user,noauto,umask=111,dmask=000 0 0
ich benutzte kubuntu 5.04 und seit letzter zeit funktioniert es nicht wenn ich konqueror oder kynaptic als su starten will.
das heißt das gewisse progrramme gar nicht erst starten. allerdings funktioniert ein "sudo "name" " in der konsole. weiß jemand woran das liegt?
bei manchen programmen wie zkpppoe funzt es allerdings noch