ZThread und Eclipse CDT

Vom einfachen Programm zum fertigen Debian-Paket, Fragen rund um Programmiersprachen, Scripting und Lizenzierung.
Antworten
dave
Beiträge: 294
Registriert: 15.05.2003 12:26:58
Wohnort: Niederkrüchten
Kontaktdaten:

ZThread und Eclipse CDT

Beitrag von dave » 20.06.2006 16:07:58

Hallo zusammen,

ich versuch jez schon seit 2 Tagen einfach ein simples ZThread Beispiel Programm was mit dem Packet mitkommt ans laufen zu bekommen. Ich hab alles was es zu libzthread gibt von Debian installiert. In Eclipse habe ich ein managed C++ Projekt angelegt und folgendes in den Einstellungen für ZThread hinzugefügt.

C++Build
GCC C++ Compiler -> Directories /usr/include/zthread

GCC Linker -> Libraries -> Libraries ZThread
GCC Linker -> Libraries -> search path /usr/include/zthread

folgendes Programm möchte ich kompilieren [1]

Und bekomme hierbei immer folgenden Fehler

Code: Alles auswählen

make -k all 
Building file: ../ThreadExample.cxx
Invoking: GCC C++ Compiler
g++ -I/usr/include/zthread -O0 -g3 -Wall -c -fmessage-length=0 -oThreadExample.o ../ThreadExample.cxx
../ThreadExample.cxx:156:2: warning: no newline at end of file
/usr/include/zthread/Guard.h: In destructor 'ZThread::Guard<LockType, LockingPolicy>::~Guard()':
/usr/include/zthread/Guard.h:486: error: there are no arguments to 'isDisabled' that depend on a template parameter, so a declaration of 'isDisabled' must be available
/usr/include/zthread/Guard.h:486: error: (if you use '-fpermissive', G++ will accept your code, but allowing the use of an undeclared name is deprecated)
make: *** [ThreadExample.o] Fehler 1
make: Das Target »all« wurde wegen Fehlern nicht aktualisiert.
Build complete for project ZThreadTest
Hat da jemand ne Idee ?

[1] http://nopaste.debianforum.de/3521

Edit by Snoopy:
Verschoben ins NoPaste [2]

[2] http://nopaste.debianforum.de/
Running Debian GNU/lLinux - Testing (for life:-))
Core 2 Duo E6400
4GB Ram
Asus P5B
Asus Geforce 7300 GT
750GB 32MB Cache Seagate SATA II NCQ
500GB 16MB Cache Seagate SATA II NCQ
Terratect Cinergy DVB-C

schlemil
Beiträge: 1
Registriert: 26.06.2006 13:10:13

Beitrag von schlemil » 26.06.2006 14:15:32

Hallo dave,

der Hund liegt hier im ZThread code begraben, der nämlich nicht mit g++ 3.4 und höher übersetzt werden kann.
Das liegt am sogenannten "two-stage name lookup", der vor 3.4 nicht richtig implementiert war, weshalb man ZThread mit g++ 3.3 übersetzen kann.
"two-stage name lookup" klingt kompliziert, die entsprechenden Korrekturen sind aber einfach.
Als Beispiel Zeile 494 im File include/zthread/Guard.h. In

Code: Alles auswählen

    if(!isDisabled())
muss ein this-> eingefügt werden

Code: Alles auswählen

    if(!this->isDisabled())
und "gut is".
Dasselbe Problem hat man auch mit dem File src/MutexImpl.h.
Ich habe den Autor von ZThread gebeten entsprechende Änderungen zu machen und ggf. einen neuen Release herauszugeben.
Aber für's erste kannst du ja alle Änderungen lokal vornehmen und damit arbieten.

schlemil

dave
Beiträge: 294
Registriert: 15.05.2003 12:26:58
Wohnort: Niederkrüchten
Kontaktdaten:

Beitrag von dave » 30.06.2006 11:11:08

danke dir werde das mal ausprobieren.
Running Debian GNU/lLinux - Testing (for life:-))
Core 2 Duo E6400
4GB Ram
Asus P5B
Asus Geforce 7300 GT
750GB 32MB Cache Seagate SATA II NCQ
500GB 16MB Cache Seagate SATA II NCQ
Terratect Cinergy DVB-C

Antworten