Ich habe versucht, die Datei glew32.lib zum Verknüpfen in meinem Projekt zu verwenden, als ich Glew-Quelle selbst kompiliere, um glew.a-Datei zu erhalten. Jetzt habe ich diese Linkfehler in meinem Projekt:
%Vor%Es ist gut, dieses Problem zu lösen, aber auf die Art, wie ich fragen möchte, gibt es andere OpenGL-Implementierungen von GL-Erweiterungen?
Ich fürchte, Sie können glew.lib nicht mit g ++ verwenden (weil .lib ein proprietäres Microsoft-Format ist). Diese Fehler enthalten keine Funktionseinstiegspunkte, was bedeutet, dass Sie GLEW nicht korrekt kompiliert haben (die benötigten Funktionen werden nicht in Ihre .so exportiert - müssen weitere Details kennen, um dieses Problem zu lösen).
>Was den anderen Teil der Frage betrifft, können Sie GLEH ausprobieren. Es befindet sich noch in der Entwicklungsphase und könnte einige Optimierungen benötigen, um für Sie zu arbeiten, aber wir haben es ziemlich erfolgreich in Linux verwendet, also sollte es nicht so schlimm sein.
(Ich weiß, das ist ein bisschen spät, aber ich dachte, es könnte das Problem eines anderen lösen, also) Ich hatte ein sehr ähnliches Problem beim Kompilieren eines Programms, das dynamisch mit GLEW verbunden ist. Es stellte sich heraus, dass ich die libglew32.dll.a
-Datei übersehen hatte - die ebenfalls vorhanden sein musste (zusätzlich zu libglew32.a
und glew32.dll
, die ich zuvor in meinen Projektordner kopiert hatte).
declspec(dllimport)
für alle externen Funktionen, die alle ihre Namen verfälschen. Deshalb haben alle fehlenden externen Symbolnamen vorne _imp____
.
Wenn Sie ein statisches Build von GLEW verwenden möchten (Sie haben etwas über libglew.a
erwähnt), definieren Sie GLEW_STATIC
während des Builds von GLEW und während des Builds Ihrer Anwendung. Dadurch werden die Namen für die statische Verknüpfung aufgehoben.
Wenn Sie eine Verbindung zu einer gemeinsam genutzten Bibliotheksversion von GLEW herstellen möchten, stellen Sie sicher, dass GLEW mit GLEW_BUILD
erstellt wird. Ich bin mir nicht sicher, ob dies mit gcc notwendig ist, aber es ist, wenn die Bibliothek mit MSVC gebaut wird.
Außerdem unterstützt die GNU-Toolchain tatsächlich Microsofts .lib
-Format zum Linken. Quelle
Sie finden es vielleicht am einfachsten, GLEW selbst zu kompilieren oder es sogar in Ihr Projekt aufzunehmen. Es ist nur eine Quelldatei und einige Header. Um die Bibliothek manuell zu kompilieren, verwenden Sie etwas in der Art von gcc -shared -o libGLEW.dll -Wl,--out-implib=libGLEW.dll.a -O2 -DGLEW_BUILD glew.c
. Um die statische Version zu erhalten, verwenden Sie stattdessen etwas wie gcc -c -O2 -DGLEW_STATIC glew.c
.