FreeType 2-Bibliothek kann nicht mit MINGW verbunden werden.ld.exe: -lfreetype kann nicht gefunden werden

StackOverflow https://stackoverflow.com/questions/6091982

Frage

Ich kompiliere mit MINGW in Windows 7 mit Code :: Blöcke als IDE. Alles sollte auf dem neuesten Stand sein. Ich bemerkte, dass es eine Reihe ähnlicher Fragen gibt, aber es schien es zu dienen, eine dynamische Bibliothek zu verknüpfen, die die statische Bibliothek nicht kompiliert.

Ich versuche, FTGL zu verwenden, um Text in OpenGL verwenden zu können. FTGL erfordert FreeType 2 installiert. Ich habe die FreeType-Quelle heruntergeladen und folgte den Anweisungen install.gnu, um die statische Bibliothek von cmd.exe zu erstellen, mithilfe von mingw32-make.exe.

Wie die angegebenen Anweisungen, rannte ich mingw32-make aus dem Basisverzeichnis der FreeType-Installation. Die Konsolenleistung war wie erwartet:

generasacodicetagpre.

Sehenswürdigkeiten Da sowohl die Plattform als auch der Compiler korrekt waren, lief ich den Befehl make wieder:

generasacodicetagpre.

Dies ergab die Datei freetype.a im Verzeichnis d: \ freetype-2.4.4 \ objs.

Ich führte dann die Schritte in Code :: Blöcke, um die Bibliothek mit dem Projekt zu verknüpfen, fügte ein Beispielbit von Code hinzu, um FTGL zu testen, und versuchte, es aufzubauen.

Ich habe zwei Fehler, je nachdem, wie ich versuche, Dinge zu tun.

Wenn ich das richtige Verzeichnis dem Linker (-LD: \ freetype-2.4.4 \ objs) anbiete und mit dem Link mit -lfreetype link, ist alles in Ordnung, bis Ld.exe mit dem Fehler im Titel aufgibt, kann nicht finden - lfreetype.

Wenn ich das richtige Verzeichnis nicht anbiete, bekomme ich den gleichen Fehler. Kann die Bibliothek nicht finden.

Wenn ich den Namen der Datei, FreeType.a, auf libfreeter.a ändere und das richtige Verzeichnis angeben, erhalte ich stattdessen mehrere undefinierte Referenzen.

generasacodicetagpre.

Wenn ich das falsche Verzeichnis anbiete, bekomme ich wieder den vorherigen Fehler, den er nicht die Bibliothek finden konnte.

Ich fand es seltsam, dass die Marke, wenn die Anweisungen in der Installationsdatei folgen, eine Bibliothek mit einem Namen erstellen, der nicht mit LIB begonnen hat. Ich habe geprüft und jede andere andere Datei mit LIB-. Und es scheint, als sei der Linker nach der Datei libfreetype.a sucht. Warum schaffen Sie stattdessen freetype.a? Dies verwendet denselben Compiler für die Bibliothek, die ich verwende, um das Programm zusammenzustellen.

Jedenfalls, nicht sicher, wohin ich von hier ausgehen soll. Ich dachte daran, die MSYS-Shell zu verwenden, die Teil des MINGW-Pakets ist, aber ich habe nicht viel Erfahrung damit und die Anweisung in install.unix nimmt davon aus, dass Sie die offensichtlichen Befehle kennen. Sie erwähnen mit ./configure [Optionen], ohne dass die Möglichkeiten ratsam sein könnten. Wahrscheinlich offensichtlich für jemanden mit mehr Kenntnissen des Systems, aber MSYS ist meine erste Erfahrung mit SH.

Ich würde helfen, mit dieser Angelegenheit Hilfe zu schätzen.

War es hilfreich?

Lösung

Meine Version von libfreetype.a (2.4.4, aus dem modifizierten Debian-Paket gebaut) exportiert nicht die Symbole, die Ihr Linker auf der Suche nach (FTPIXMAPFONT Constructor) sucht (FTPIXMAPFONT Constructor), und die Header erklären keine solche Klasse.Eine schnelle Google-Suche zeigt an, dass sie zu FTGL gehören.

Umbenennen Ihrer Importdatei in libfrealtype.a war korrekt (der MINGW LD wird es nicht anders finden), aber haben Sie auch mit den erforderlichen FTGL-Bibliotheken verbunden?

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top