Poppler kompilieren



  • Hey Leute,
    ich hatte ja mal hier nen Thread auf, wo es drum ging Poppler in Verbindung mit Qt zu nutzen, jedoch kam ich da nicht weit, ich wusste nichts anzufangen mit dem Download von Poppler, und konnte es auch nicht kompilieren.
    So ich habe mich mittlerweile viel durchs Internet gelesen und bin recht weit gekommen.
    Ich probier das ganze mittels cmake ./ über die Visual Studio Eingabeaufforderung zu kompilieren, jedoch bekomme ich folgende Fehlermeldungen:

    CMake Error: The following variables are used in this Project, but they are set to NOTFOUND.
    Please set them or make sure that they are set and tested correctly in the CMake Files:
    
    ICONV_LIBRARIES( ADVANCED )
    linked by target "poppler-cpp" in the directory C:/Users/name/poppler-0.13.2/cpp
    
    QT4_QTCORE_LIBRARY( ADVANCED )
    linked by target "poppler-qt4" in the directory C:/Users/name/poppler-0.13.2/qt4/src
    

    Der gleiche fehler kommt noch für QT4_QTGUI_LIBRARY und QT$_QTXML_LIBRARY.

    Ich kann mit dieser Fehlermeldung jedoch irgendwie gar nichts anfangen, hoffe iht könnt mir helfen;-)

    Schonmal danke

    Gruß freeG



  • Es kommt für Windows glaub ich eine CMake-Gui mit. Src-Directory + Build-Directory angeben (ja, CMake erlaubt es, die Sourcen unberührt zu lassen, und die Object-Dateien usw. in nem anderen Dir abzulegen und zu linken usw.).
    Dann "run cmake", dann gibt es Fehlermeldungen und du kannst in einer Tabelle die Verzeichnisse setzen, wo z.B. iconv gefunden wird, oder Qt4.
    Ansonsten kannst du es mit der CMake Hilfe versuchen.

    Ich versteh aber immer noch nicht, dass du dich so gegen den QDesktopServices::openUrl() sträubst.



  • Erst mal Danke für die Antwort=)

    Ich stelle mich nicht wirklich gegen QDesktopServices::OpenUrl(), ich benutze es ja auch, aber in einem anderen Zusammenhang.
    Ich will einfach erreichen, dass mehrere PDF-Dateien eines Verzeichnisses automatisch nach einem Begriff durchsucht werden. Wenn dann das entsprechende gefunden wurde, öffne ich diese Datei ja auch über QDesktopServices::OpenUrl().

    Aber das bringt mir ja leider nichts um die Dateien automatisch zu durchsuchen.

    Weiß du was ich meine;-)

    Gruß freeG

    EDIT:

    Also mit dem Cmake-Gui hats geklappt, bei Source Directory hab ich einfach C:/Users/Name/poppler-0.13.2 angegeben und bei Where to build Binaries hab ich das gleiche angegeben.
    Jetzt sind in dem Verzeichnis ein paar Dateien mehr, zum Beispiel cmake_install.

    Was muss ich denn jetzt machen?

    Danke schonmal



  • fr33g schrieb:

    Also mit dem Cmake-Gui hats geklappt, bei Source Directory hab ich einfach C:/Users/Name/poppler-0.13.2 angegeben und bei Where to build Binaries hab ich das gleiche angegeben.
    Jetzt sind in dem Verzeichnis ein paar Dateien mehr, zum Beispiel cmake_install.

    Was muss ich denn jetzt machen?

    Über die Konsole ins Build-Directory wechseln und da ein "make" ausführen. Evtl. noch ein "make install". Oder wie du unter Windows deine Binaries über Konsole erstellst.

    Schau dich aber mal in der Doku zu cmake um (cmake.org). Du kannst auch mit der Option "-G" einen anderen Generator wählen AFAIK sollte da auch einer für Visual Studio existieren. Solltest du auch in der Cmake-Gui angeben/auswählen können. Dann einfach in VS öffnen, bauen, installieren (gibt es da solche Möglichkeiten?), und fertig.

    Du kannst auch selber CMake für deine Projekte verwenden, ich nehm nichts anderes mehr. Selbst für reine Qt-Projekte. Eben auch, weil kdevelop4 sehr gut mit cmake umgehen kann.



  • Mhh also ich weiß nicht wie ich das unter Windows anstellen soll, keine Ahnung was ich mit der cmake_install datei machen kann?
    Es gibt ja auf Windows keinen make und make install befehel...

    Hat da jemand vll eine Ahnung, welches Kommando ich mit CMake eingeben muss oder was ich eben machen muss.

    Wäre echt lieb.

    Danke gruß freeG

    EDIT:
    Also habs jetzt mal mit cmake install probiert, er macht dann zwar was, jedoch finde ich im verzeichnis immmer noch keine .lib oder .dll 😞



  • CMake ist ein Makefile-Generator. Du musst schon den korrekten Generator wählen. Wenn du unter Windows mit MS VS arbeitest, dann wählst du einfach den passenden Generator. Ob du das jetzt über konsole mit cmake oder mittels GUI (cmake-gui) machst, ist wurscht.
    Heraus kommt dann ein Makefile, oder sonst was, womit du dann mit den entsprechenden Tools deine Lib, exe oder sonstwas bekommst.

    Und wie du das jetzt genau anstellst, sollte binnen weniger Clicks über Googlesuche nach "cmake visual studio" oder ähnlich gefunden sein. Ich habe kein Windows, kann dir also nicht sagen wie das geht. Vllt. erbarmt sich ja noch jemand, aber google ist eigentlich weise genug, google weiß das schon.



  • Ja also bei cmake gui hab ich ja mingw makefile ausgewählt.
    So was ich mit dem make install anfangen kann weiß ich zwar nicht, aber ich kann doch eg das ganze mittels mingw32-make kompilieren, jedoch bekomme ich dann ne Reihe an Fehlermeldungen...
    http://img683.imageshack.us/img683/556/unbenanntxjz.png

    Hoffe ihr könnt mir vielleicht helfen was ich da machen kann...

    Habs jetzt nomal mit cmake gui gemacht und als compiler fürs makefile Code Blocks MinGw gewählt.
    So cmake install hab ich keins gemacht, weil er da irgendwie sowieso nichts macht bei mir...weiß auch nicht für was das gut ist.

    Auf jeden Fall hab ich dann die CodeBlocks Projekt Datei geöffnet die er mir erstellet hat, dann wollt ich über CodeBlocks das ganze builden, jedoch bringt er mir dann auch die build errors, wie in dem Bild oben, blos eben in CodeBlocks.

    An was könnte dass denn liegen??
    Besser gesagt was kann ich da machen;-)

    Danke schonmal, hoffe ihr könnt mir helfen.

    Gruß freeG



  • Du kannst jetzt

    1. versuchen den Fehler selber zu debuggen. Die Meldung ist klar, aus irgend einem Grund ist ihm "ImgWriter" unbekannt. Fehlt ein include?
    2. (besser) Statt dem beta-poppler das stabile poppler runterladen. Stabil ist 0.12.4. Die 0.13.x sind allesamt beta.


  • He, danke genau des habe ich grad auch gemacht, bevor ichs gelesen hab:D;-)
    Und da kamen nur 2 fehler, weil er die fontconfig.h nicht gefunden hat.
    Die hab ich jetzt manuell eingegeben, jetzt kompiliert er mal fleißig=)

    Hoffe das klappt.

    Auf jeden Fall mal vielen Dank=)

    EDIT:

    Soooo, also er hat es kompiliert, nachdem ich die fontconfig.h einfach in den poppler-Ordner kopiert habe und in der Fehlerverursachenden .cc datei #include "fontconfig.h" geschrieben habe.

    So wenn ich jedoch mein Programm dann builde, kommt beim starten wieder der Fehler, dass er den Prozedureinsprungspunkt "xmlCtxtGetLastError" in der "libxml2.dll nicht gefunden wurde.

    Hoffe ihr könnt mir helfen, weil ich hab ja jetzt eigentlich Poppler korrekt kompiliert.

    Schonmal vielen Dank

    Gruß freeG

    Gruß freeG



  • Sag mal hast du vllt. irgend eine andere libxml2.dll in deinem PATH liegen (oder wo dein Windows noch nach DLLs sucht)?
    Schonmal mit dem Depenency Walker angeschaut? (So heißt doch das Ding, oder?)



  • Also ich hab mal mein Pc durchsucht, eine libxml2.dll ist im windows verzeichnis, eine im Ordner Apple Application Support und eine im KDE Verzeichnis.

    Was soll ich denn nun machen?

    Wenn ich die aus dem KDE Verzeichnis in mein Projekt Ordner kopiere, dann kommt wieder der Fehler 0xc000007b....

    Man man, das muss doch irgendwie gehen=)

    Jemand ne Idee?

    EDIT:
    So hab jetzt die aus dem Apple Ordner reinkopiert, dann meckerte er, dass die icuuc40.dll fehlt, nachdem ich diese aus dem apple ordner reinkopierte, wollte er die icudt40.dll.
    So danach wollte er noch die MSVCR80.dll, ich hab meinem Pc nach dieser Datei durchsucht, hab davon sehr viele auf meinem PC.
    Hab jetzt probiert, eine nach der anderen reinzukopieren, er meldet dann nur wieder den 0xc000007b Fehler.

    Jemand ne Idee?

    Gruß freeG



  • Hey Leute,
    also es hat sich erledigt=)
    Habs endlich hinbekommen.
    In nem anderen Apple Ornder war auch eine libxml2.dll und hab den Orndern dann komplett in die Path gesetzt, und dann ging es=)

    Gruß freeG

    Und vielen Dank für die Hilfe=)


Anmelden zum Antworten