2016-09-24 3 views
0

I verwendet wx-config --libs die Linker Argumente für meine Anwendung zu erzeugen, und der Ausgang ist die folgende:Nicht definierte Referenz auf den Konstruktor von wxGLCanvas?

-L/usr/lib/x86_64-linux-gnu -pthread -lwx_gtk2u_xrc-3.0 -lwx_gtk2u_html-3.0 -lwx_gtk2u_qa-3.0 -lwx_gtk2u_adv-3.0 -lwx_gtk2u_core-3.0 -lwx_baseu_xml-3.0 -lwx_baseu_net-3.0 -lwx_baseu-3.0

compiles Meiner Anwendung aber keine Verknüpfung, sondern eine undefinierte Referenz an den Konstruktor für eine wxGLCanvas zitieren. Ich weiß, dass ein Konstruktor veraltet ist, aber ich verwende anscheinend den, der nicht ist: wxGLCanvas(<frame>,wxID_ANY,NULL) wie in http://docs.wxwidgets.org/3.0/classwx_g_l_canvas.html zu sehen.

Der Rest der Linker-Fehler sind alle nicht definierten Verweise auf verschiedene Methoden von WxGLCanvas. Zur sicheren Messung habe ich allen Zielen -DwxUSE_GLCANVAS=1 hinzugefügt, aber das hatte keine Auswirkungen. Was mache ich falsch?

Falls es relevant ist, verwende ich auch wx-config --cflags während der Kompilierung:

-I/usr/lib/x86_64-linux-gnu/wx/include/gtk2-unicode-3.0 -I/usr/include/wx-3.0 -D_FILE_OFFSET_BITS=64 -DWXUSINGDLL -D__WXGTK__ -pthread

Beachten Sie auch, dass die Dokumente nach wie vor mit SetCurrent empfehlen, die als veraltet markiert zu werden scheint. Gibt es aktuellere Dokumente als die, die ich verlinkt habe?

+0

* Wo setzen Sie die Bibliotheken, die verlinkt werden sollen? Ich meine auf der Kommandozeile? Die Reihenfolge der Objektdateien und Bibliotheken kann wichtig sein. Fügen Sie Bibliotheken immer * nach * Ihren Objektdateien (oder Quelldateien) hinzu. –

+0

Am Ende der Zeile: '$ (CXX) -o $ @ $ (Objekte) $ (LDFLAGS)' ... wo LDFLAGS ist ... 'LDFLAGS: = $ (LDFLAGS) $ $ (wx-config --libs) -lGL' Als Nebenbei verknüpfte die Anwendung, wenn es nur ein Fenster ohne ein wxGLCanvas war. –

+2

[Dieses Wiki lesen] (https://wiki.wxwidgets.org/WxGLCanvas) Es scheint, dass Sie '--gl-libs' zum' wx-config' Befehl hinzufügen müssen, um die OpenGL Bibliotheken zu erhalten. Hast du das probiert? –

Antwort

1

wx-config --libs entspricht wx-config --libs std wobei "std" für die Teilmenge der "Standard" -Bibliotheken steht, die standardmäßig verwendet werden. Wenn Sie eine der nicht in dieser Liste enthaltenen Bibliotheken wie "webview", "richtext" oder "gl" verwenden möchten, müssen Sie diese explizit auflisten.

So ist der richtige Befehl in Ihrem Fall zu verwenden wx-config --libs std,gl.

Verwandte Themen