Xcode: dcmtk compile problema (error: expected unqualified-id before 'do') es GL extension kerdes

Fórumok

Sziasztok!

A MacOS programozas elkezdesekent a meglevo Linux cuccaimat elkezdtem MacOS-re atirni. Egy dcmtk (http://dicom.offis.de/dcmtk.php.en) program nem fordul, a kovetkezot produkalja:
/Users/shogy/devel/3rdparty/dcmtk-3.5.4/include/dcmtk/dcmdata/dcobject.h:251: error: expected unqualified-id before 'do'
/Users/shogy/devel/3rdparty/dcmtk-3.5.4/include/dcmtk/dcmdata/dcobject.h:251: error: expected unqualified-id before 'while'
/Users/shogy/devel/3rdparty/dcmtk-3.5.4/include/dcmtk/dcmdata/dcbytstr.h:198: error: expected unqualified-id before 'do'
/Users/shogy/devel/3rdparty/dcmtk-3.5.4/include/dcmtk/dcmdata/dcbytstr.h:198: error: expected unqualified-id before 'while'
/Users/shogy/devel/3rdparty/dcmtk-3.5.4/include/dcmtk/dcmdata/dcitem.h:208: error: expected unqualified-id before 'do'
/Users/shogy/devel/3rdparty/dcmtk-3.5.4/include/dcmtk/dcmdata/dcitem.h:208: error: expected unqualified-id before 'while'
/Users/shogy/devel/3rdparty/dcmtk-3.5.4/include/dcmtk/dcmdata/dcsequen.h:187: error: expected unqualified-id before 'do'
/Users/shogy/devel/3rdparty/dcmtk-3.5.4/include/dcmtk/dcmdata/dcsequen.h:187: error: expected unqualified-id before 'while'

A kerdeses header file-okban termeszetesen nincs se do se while. A google-n probaltam hasonlot keresni, keves sikerrel.

Az Xcode a kovetkezo paranccsal fordit:
$ /usr/bin/gcc-4.0 -x c++ -arch ppc -pipe -Wno-trigraphs -fpascal-strings -fasm-blocks -g -O0 -DHAVE_CONFIG_H -fmessage-length=0 -mtune=G5 -mfix-and-continue -fvisibility-inlines-hidden -I/Users/shogy/devel/Projects/OGL/dcmtest/build/dcmtest.build/Debug/dcmtest.build/dcmtest.hmap -F/Users/shogy/devel/Projects/OGL/dcmtest/build/Debug -I/Users/shogy/devel/Projects/OGL/dcmtest/build/Debug/include -I/Users/shogy/devel/3rdparty/dcmtk-3.5.4/include -I/Users/shogy/devel/Projects/OGL/dcmtest/build/dcmtest.build/Debug/dcmtest.build/DerivedSources -include /Library/Caches/com.apple.Xcode.501/SharedPrecompiledHeaders/Carbon-bedhlsvctlgomtcklbudwfbgycxi/Carbon.h -c /Users/shogy/devel/Projects/OGL/dcmtest/dcmtest.cpp -o /Users/shogy/devel/Projects/OGL/dcmtest/build/dcmtest.build/Debug/dcmtest.build/Objects-normal/ppc/dcmtest.o
/Users/shogy/devel/3rdparty/dcmtk-3.5.4/include/dcmtk/dcmdata/dcobject.h:251: error: expected unqualified-id before 'do'
/Users/shogy/devel/3rdparty/dcmtk-3.5.4/include/dcmtk/dcmdata/dcobject.h:251: error: expected unqualified-id before 'while'
/Users/shogy/devel/3rdparty/dcmtk-3.5.4/include/dcmtk/dcmdata/dcbytstr.h:198: error: expected unqualified-id before 'do'
/Users/shogy/devel/3rdparty/dcmtk-3.5.4/include/dcmtk/dcmdata/dcbytstr.h:198: error: expected unqualified-id before 'while'
/Users/shogy/devel/3rdparty/dcmtk-3.5.4/include/dcmtk/dcmdata/dcitem.h:208: error: expected unqualified-id before 'do'
/Users/shogy/devel/3rdparty/dcmtk-3.5.4/include/dcmtk/dcmdata/dcitem.h:208: error: expected unqualified-id before 'while'
/Users/shogy/devel/3rdparty/dcmtk-3.5.4/include/dcmtk/dcmdata/dcsequen.h:187: error: expected unqualified-id before 'do'
/Users/shogy/devel/3rdparty/dcmtk-3.5.4/include/dcmtk/dcmdata/dcsequen.h:187: error: expected unqualified-id before 'while'

Ha kiveszem az alabbi include-ot, tokeletesen lefordul:
'-include /Library/Caches/com.apple.Xcode.501/SharedPrecompiledHeaders/Carbon-bedhlsvctlgomtcklbudwfbgycxi/Carbon.h'

Talalkozott mar valaki ezzel a problemaval? Valami Mac vagy Xcode sajatossag lehet, Linux alatt es - amint latszik - precompiled header nelkul MacOS alatt is szepen fordul.

A masik, amibe belefutottam nem egeszen MacOS specifikus, de jo lenne letisztazni: mi az elfogadott, portolhato modja az OpenGL extension-ok kezelesenek?
Lattam mar dlopen() + dlsym() kombinaciot az extension fuggvenyek megtalalasara, glext.h es -DGL_GLEXT_PROTOTYPES hasznalatat. Van olyan megoldas, ami mindenhol (legalabb Mesa / NVidia / AGL) alatt is mukodik es a GLEW-el egyutt hasznalhato?

Ezenkivul szivesen fogadnek minden tanacsot / tutorial-t / otletet, ami segit a MacOS X / Carbon megismereseben es hasznalataban.

Koszi,

shogy

Hozzászólások

Talalkozott mar valaki ezzel a problemaval? Valami Mac vagy Xcode sajatossag lehet, Linux alatt es - amint latszik - precompiled header nelkul MacOS alatt is szepen fordul.

Passz. Ilyennel meg nem talalkoztam. Gyanus, hogy szar az a prekomp. header. Torold le, oszt jovan. :) Amugy ez gcc nem Xcode sajatossag. Xcode csak egy frontent.

Van olyan megoldas, ami mindenhol (legalabb Mesa / NVidia / AGL) alatt is mukodik es a GLEW-el egyutt hasznalhato?

Nincs. Ez minden platformon mashogy mukodik (ennyit az OpenGL multiplatform hirerol:). Windows/Linux alatt egy GL extension betoltese csak context letrehozasa utan lehetseges, AGL-lel akar static linkelessel is megoldhato. Eleg idegesito szokas. Windows alatt wglGetProcAddress(), GLX-szel glxGetProcAddress() a baratod.

Ezenkivul szivesen fogadnek minden tanacsot / tutorial-t / otletet, ami segit a MacOS X / Carbon megismereseben es hasznalataban.

Ha csak ablak letrehozasa a cel, es abba firkalni, akkor tudok adni forrast, amibol megirhatod a sajatod es a developer.apple.com oldalon a tovabbiakban ad tampontot merre keresgelj (anno onnan irtam meg en is). Ha GUI-s dolgot akarsz irni, akkor javaslom inkabb Cocoa-t.

---
pontscho / fresh!mindworkz

Passz. Ilyennel meg nem talalkoztam. Gyanus, hogy szar az a prekomp. header. Torold le, oszt jovan. :) Amugy ez gcc nem Xcode sajatossag. Xcode csak egy frontent.

Letoroltem az egesz SharedPrecompiledHeaders konyvtarat, de ujrageneralja a mocsok. A hivatkozott file nem letezik, csak egy Carbon.h.gch es egy Carbon.h.gch.hash-criteria file. Az a gyanum, hogy kihagyok valami szukseges beallitast.

Nincs. Ez minden platformon mashogy mukodik (ennyit az OpenGL multiplatform hirerol:). Windows/Linux alatt egy GL extension betoltese csak context letrehozasa utan lehetseges, AGL-lel akar static linkelessel is megoldhato. Eleg idegesito szokas. Windows alatt wglGetProcAddress(), GLX-szel glxGetProcAddress() a baratod.

Az NVidia driverrel a kovetkezoket hasznaltam:
file.cpp:
#include

gcc: -DGL_GLEXT_PROTOTYPES

Ezzel a megoldassal az extension konstansok es fuggvenyek is elerhetok forditasi idoben, nem kell tokolni a cimek keresesevel. Ugy tunik, ez XCode project-ben is jol mukodik, en neztem el az elejen.

Ha csak ablak letrehozasa a cel, es abba firkalni, akkor tudok adni forrast, amibol megirhatod a sajatod es a developer.apple.com oldalon a tovabbiakban ad tampontot merre keresgelj (anno onnan irtam meg en is). Ha GUI-s dolgot akarsz irni, akkor javaslom inkabb Cocoa-t.

Nagyon jo lenne, ha tudnal adni nehany egyszerubb forrast.

Olyan jellegu tapasztalatokra is gondoltam, hogy milyen build rendszert (IDE project vs. makefile) es UI-t (mindenhol ugyanazt vs. jol szeparalt, OS specifikus UI reteg) / stb. erdemes hasznalni, a kesz cuccokat hogy erdemes csomagolni (.app vs .pkg vs .tgz) es hasonlok.

Koszi,

shogy

Ezzel a megoldassal az extension konstansok es fuggvenyek is elerhetok forditasi idoben, nem kell tokolni a cimek keresesevel. Ugy tunik, ez XCode project-ben is jol mukodik, en neztem el az elejen.

Bevallom oszinten van mar egy/ket eve is, hogy ezt a musort vegig szoptam, de a legjobb megoldas a context krealas utani fuggveny kereses volt. Ez rendesen mukodott W32 es lnx alatt is. (Volt par blackbox probam linux-szal, eddig mindenhol jo lett:)

Nagyon jo lenne, ha tudnal adni nehany egyszerubb forrast.

Dobj egy mail cimet.

Olyan jellegu tapasztalatokra is gondoltam, hogy milyen build rendszert (IDE project vs. makefile) es UI-t

En old school arc vagyok, nekem eleg egy makefile ill. egy konzolos editor :)

(mindenhol ugyanazt vs. jol szeparalt, OS specifikus UI reteg) / stb. erdemes hasznalni,

Amit a /System/Frameworks-ben talalsz. AGL/CGL. AGL az egyszerubb, a CGL a jovo. :) OpenGL-hez ket framework alap: AGL/CGL, OpenGL. :)

a kesz cuccokat hogy erdemes csomagolni (.app vs .pkg vs .tgz) es hasonlok.

.app Ecceru letrehozni, ket mkdir es egy XML kitoltese. Ha mindenkepp instalalhato cucc kell, akkor belepakolod egy tomoritett DMG-be (DiskUtility-vel siman letrehozhato), melle raksz egy linket a /Applications-ra es amen :) De cifrazhato is. Bar nem tudom hogyan, mert sosem erdekelt, lehetseges scriptet irni ami ezt megcsinalja automatan.

---
pontscho / fresh!mindworkz

Dobj egy mail cimet.

sogorla at gmail dot com

En old school arc vagyok, nekem eleg egy makefile ill. egy konzolos editor :)

Nekem is, jonehanyan mar le is osembereztek miatta :)

Azert kezdtem el az Xcode-ot nezegetni, hogy lassam hol tart ma mar a technika. Egy dolgot meg nem tudtak kikuszobolni: ha valami nem megy elsore, akkor nagyszopas van vele (lasd precompiled header).

koszonom a segitseget,

shogy