"wxImage _framebuffer" und wx Widgets

Dieses Thema im Forum "Mac OS X Entwickler, Programmierer" wurde erstellt von slackfr, 21.06.2006.

  1. slackfr

    slackfr Thread Starter MacUser Mitglied

    Beiträge:
    425
    Zustimmungen:
    1
    Registriert seit:
    20.02.2006
    Hallo,
    habe schon etliches versucht, um bei meinem problem mir selbst auf die sprümge zu helfen, jedoch stehts ohne erfolg.

    umgebung

    Uni->projeckt->3d-visualisiurung->implimentierung von 3d-objeckten
    programiersprache c++, benutzte bibliotheken von wxWindows (2.6.2 angeblich) mit OpenGL

    fortschritte:
    compilierung von wxWidgets mit hilfe von darwinports, anschlißend nochmaliges compilieren manuell mit "--with-opengl"

    problem:
    bei der compilierung des programms des projeckts wird auf meinem mac stehts angezeigt:
    Code:
    make gdvvk
    Updating dependency file for Vector3d.cpp
    Updating dependency file for MyCanvasGL.cpp
    Updating dependency file for MyCanvas.cpp
    Updating dependency file for CanvasGL.cpp
    Updating dependency file for Canvas.cpp
    Updating dependency file for GDVFrame.cpp
    Updating dependency file for gdvvk.cpp
    g++ -Wall `wx-config --cppflags` -g -DDEBUG  gdvvk.cpp -c -o build/gdvvk.o
    g++ -Wall `wx-config --cppflags` -g -DDEBUG  GDVFrame.cpp -c -o build/GDVFrame.o
    [B]Canvas.h:28: error: field '_frameBuffer' has incomplete type[/B]
    make: *** [build/GDVFrame.o] Error 1
    bei der nachfrage beim lektor, meint dieser, das das wxwidgets nicht mit allen nötigen optionen compiliert wurde, jedoch welche das sind, weiß er nicht, da er die (linux-)rechner in der uni nicht selbst aufgesetzt hatte

    hier könnt ihr die header datei einsehen wo der fehler auftritt: Canvas.h

    wäre über jeden tip dankbar

    p.s. kann es sein, das wenn ich wxwidgets nochamls compiliert hatte die immer noch die alte bibliothek verwendet wird? beim compilieren bin ich so vorgegangen:
    Code:
    mkdir osx-build
    cd osx-build
    ../configure --with-opnegl
    make
    sudo make install
    
     
  2. der_Kay

    der_Kay MacUser Mitglied

    Beiträge:
    1.693
    Zustimmungen:
    7
    Registriert seit:
    02.09.2004
    #include <wx/image.h>

    p.s.:
    ./configure --with-opengl
     
    Zuletzt bearbeitet: 21.06.2006
  3. slackfr

    slackfr Thread Starter MacUser Mitglied

    Beiträge:
    425
    Zustimmungen:
    1
    Registriert seit:
    20.02.2006
    besten dank :) :) :)

    warum wusste das der prof nicht, bzw warum hat es bei den anderen anscheinend auf den linux rechnern so funktioniert?

    jetzt bekomme ich aber weiter das problem:
    Code:
    g++ -Wall `wx-config --cppflags` -g -DDEBUG  gdvvk.cpp -c -o build/gdvvk.o
    g++ -Wall `wx-config --cppflags` -g -DDEBUG  GDVFrame.cpp -c -o build/GDVFrame.o
    g++ -Wall `wx-config --cppflags` -g -DDEBUG  Canvas.cpp -c -o build/Canvas.o
    [B]Canvas.cpp: In member function 'void Canvas::onSize(wxSizeEvent&)':
    Canvas.cpp:25: error: 'cout' is not a member of 'std'
    Canvas.cpp:25: error: 'endl' is not a member of 'std'
    make: *** [build/Canvas.o] Error 1[/B]
    die dazu gehörige datei ist hier: Canves.cpp

    bzw was sagen mir die fehler eigentlich?
     
  4. der_Kay

    der_Kay MacUser Mitglied

    Beiträge:
    1.693
    Zustimmungen:
    7
    Registriert seit:
    02.09.2004
    #include <iostream>

    'cout' is not a member of 'std' heisst, daß aus Sicht des Compilers kein Typ und keine Funktion namens cout im Namesraum std exisitiert. Weil sie noch nicht deklariert wurden.

    Die Gründe, aus denen der Code bei den anderen kompilierte könnten sein, daß die anderen eine wxWidgets-Version verwenden, in der <wx/image.h> noch zu den "häufig" verwendeten #includes gehörte. Oder <wx/image.h> wurde unsaubererweise ausserhalb des Canvas.h-Headers vorher #include-d.

    p.s.:
    Compiler lügen nicht, sind aber verdammt kurzsichtig... ;)
     
    Zuletzt bearbeitet: 21.06.2006
  5. slackfr

    slackfr Thread Starter MacUser Mitglied

    Beiträge:
    425
    Zustimmungen:
    1
    Registriert seit:
    20.02.2006
    eh man, du bist einfach klasse :)

    anscheid hat der prof aber inseinem basis paket noch einige anderer fehler drine, kannst du mir da vielleicht auch weiter helfen?

    Code:
    ...
    g++ -Wall `wx-config --cppflags` -g -DDEBUG  Canvas.cpp -c -o build/Canvas.o
    g++ -Wall `wx-config --cppflags` -g -DDEBUG  CanvasGL.cpp -c -o build/CanvasGL.o
    [B]CanvasGL.cpp: In member function 'GLuint CanvasGL::loadTexture(const wxString&)':
    CanvasGL.cpp:115: error: variable 'wxImage img' has initializer but incomplete type[/B]
    make: *** [build/CanvasGL.o] Error 1
    hier die CanvasGL.cpp

    p.s.

    habe dem prof gerade eine mail geschrieben scherzens halber, mal sehen was er dazu sagt das da diese zeilen gefehlt haben...obwohl er doch fest der meinung war, dass das wx falsch compiliert sei
     
  6. slackfr

    slackfr Thread Starter MacUser Mitglied

    Beiträge:
    425
    Zustimmungen:
    1
    Registriert seit:
    20.02.2006
    ich glaub ich bekomme den dreh langsam selber raus ;)...fehlt wieder der wx/image.h
     
  7. der_Kay

    der_Kay MacUser Mitglied

    Beiträge:
    1.693
    Zustimmungen:
    7
    Registriert seit:
    02.09.2004
    Das wird schon.

    Noch ein Tipp (- den ich hier im Forum bekam - :) ): Nachher das Binary mit
    Code:
    `wx-config --rezflags` <binary name>
    nachbehandeln. Dann wird es eine "richtige" App zum Anklicken.

    Noch ein Tipp: Ich habe ein sehr merkwürdiges Fehlverhalten bei GUI-Elementen unter wxMac 2.6.2 festgestellt, in dem Sinne daß einige Elemente (Grids, Buttons usw.) einfach unsinnigerweise nicht auf Anklicken/Mauseingaben reagieren. Wenn das passiert, achte darauf, dass das GUI-Element erst nach dem beinhaltenden Sizer erzeugt wird. (siehe hier)

    Viel Spass noch,

    Kay
     
    Zuletzt bearbeitet: 21.06.2006
  8. slackfr

    slackfr Thread Starter MacUser Mitglied

    Beiträge:
    425
    Zustimmungen:
    1
    Registriert seit:
    20.02.2006
    so, nach dem er nun alles ordnungs gemäß compiliert hatte, ruft er zum schluß des "make-vorgangs" noch "/usr/bin/ld" auf (soweit ich das versanden habe... dabei bekomme ich eine fehler:

    Code:
    g++ -Wall `wx-config --cppflags` -g -DDEBUG  Vector3d.cpp -c -o build/Vector3d.o
    g++ build/gdvvk.o build/GDVFrame.o build/Canvas.o build/CanvasGL.o build/MyCanvas.o build/MyCanvasGL.o build/Vector3d.o `wx-config --libs --gl-libs` -lGLEW -o gdvvk
    /usr/bin/ld: Undefined symbols:
    _glBindTexture
    _glGenTextures
    _glPixelStorei
    _glTexParameteri
    _glViewport
    _gluBuild2DMipmaps
    _glBegin
    _glClear
    _glColor3f
    _glEnable
    _glEnd
    _glFlush
    _glLoadIdentity
    _glMatrixMode
    _glTexCoord2f
    _glTexEnvi
    _glVertex3f
    _gluPerspective
    collect2: ld returned 1 exit status
    make: *** [gdvvk] Error 1
    
    was bedeutet dieser, woran liegt es?
     
  9. der_Kay

    der_Kay MacUser Mitglied

    Beiträge:
    1.693
    Zustimmungen:
    7
    Registriert seit:
    02.09.2004
    Es fehlt das OpenGL-Framework, d. h. dem Linker wurden die Bibliotheken OpenGL und GL-UtilityToolkit nicht zum Linken mitübergeben.

    Das Makefile macht in der letzten Regel den Aufruf
    Code:
    `wx-config --libs --gl-libs`
    , der die nötigen Linker-Flags hinzufügt.

    Ersetze im Makefile `wx-config --libs --gl-libs` durch
    Code:
    `wx-config --libs` -framework OpenGL `wx-config --gl-libs`
    (Kurz gesagt: es fehlt "-framework OpenGL".)

    Was mich stutzig macht ist das -lGLEW, eine "libGLEW.a" o.ä. ist mir unbekannt... :-/
     
    Zuletzt bearbeitet: 21.06.2006
  10. slackfr

    slackfr Thread Starter MacUser Mitglied

    Beiträge:
    425
    Zustimmungen:
    1
    Registriert seit:
    20.02.2006
    an welcher stelle der make-file müsste ich dies einfügen?

    hier ist die makefile aus dem basispaket des profs: makefile


    oder muss ich noch ein zusätzliches opengl-paket installieren, abgesehen von dem was ich bei wx-compilieren mit eingebunden habe?
     

Diese Seite empfehlen