Seite 1 von 1

LibXL mit MinGW

Verfasst: 21. April 2011 14:45
von Naku
Hey Qt-Users

Ich bin noch ganz neu hier, da ich über die Suche bis jetzt meist zum Ziel gekommen bin. Nun habe ich aber ein Problem, das ich euch gerne mal unterbreiten würde: Vor ca. drei Wochen habe ich begonnen, den Umgang mit Programmbibliotheken zu erlernen, da ich für ein Projekt ne DLL nutzen musste. Das hat auch relativ gut geklappt und ich konnte die Applikation auch Qt- un DLL-unabhängig machen indem ich meine Qt-libs statisch gemacht habe. Nun muss ich (für eine andere App) .xls Files lesen können und habe mir deshalb die Testversion von libXL gezogen... ABER: die Einbindung der Bibliothek scheint nicht auf dem gleichen Weg zu funktionieren wie damals bei der PicoDLL...

Ich habe:

im .pro File: LIBS += "C:/libxl/lib/libxl.lib"

im Programmordner: libxl.dll

und die libxl.h ist auch eingebunden.

Bei der Kompilierung (mit MinGW) gibt er mir keine Fehler aus, allerdings hängt sich die App gleich nach dem Start auf.

Genutzt habe ich nur eine Funktion, nämlich:

Book* book = xlCreateBook();

Mit Visual Studio habe ich es geschafft, allerdings würde ich lieber QT verwenden. Was muss ich tun, damit dies geht? Grundsätzlich sollte es
doch gehen, oder? Ich habe eben auch schon Dinge gehört wie "diese DLL geht nur mit Visual Studio..."

nein... das muss doch wohl gehen. Was mach ich falsch :?: :?:
Bitte helft mir...

Peace und frohe Ostern!!

Naku


Sorry sollte die Frage vielleicht in Qt-Programmierung verschieben...
Nur... keine Ahnung wie ;-)

Re: LibXL mit MinGW

Verfasst: 22. April 2011 08:24
von franzf
Naku hat geschrieben:Ich habe eben auch schon Dinge gehört wie "diese DLL geht nur mit Visual Studio..."

nein... das muss doch wohl gehen. Was mach ich falsch :?: :?:
Nein, da denkst du falsch! DLLs von Visual Studio sind NICHT KOMPATIBEL mit MinGW! Entweder kompilierst du Qt mit Visual Studio (oder verwendest die fertigen Binaries von nokia.com), oder du kompilierst libxl mit MinGW. Wenn libxl nicht im Sourcecode erhältlich ist, hast du Pech und musst den ersten Weg nehmen...

Und eine prinzipielle Sache: "Geht nicht" ist keine Fehlermeldung, da kann dir niemand helfen. Compiler und Runtime sind meist so nett, und sagen dir, was nicht funktioniert. Diese meldungen bitte immer mit posten, sonst hängen wir in der Luft und müssen erstmal genauer nachfragen.

Verfasst: 22. April 2011 08:41
von Naku
Ach.. war diese Aussage also doch richtig.. Schade. Aber danke für die Aufklärung franzf! Dass ihr Fehlermeldungen wünscht, ist mir klar. Geht mir auch so. Nur hat Qt in diesem Fall eben NICHTS gemeldet. MinGW wurde normal mit exit-Wert 0 beendet...
Naja, dann werde ich mal versuchen die Qt-Libs für VC++ zu konfigurieren.

Danke und frohe Ostern!!

Edit: Ahh und noch was: Im examples Ordner von libXL sind drei Ordner mit Beispielen für Visual Studio aber auch ein Ordner namens mingw... Den Quelltexten kann ich allerdings keine Unterschiede entnehmen. Denke, es müsste also irgendwie gehen...

Verfasst: 22. April 2011 09:38
von padreigh
Das wäre ja auch noch schöner wen man für das selbe Programm in der selben Sprache zwei verschiedene Quelltexte machen müsste.

Dein Problem ist eher dies: du hast die Bibel in hebräisch und gibst sie zwei verschiedenen Übersetzern und erwartest das hinterher beide Übersetzungen identisch sind - was aufgrund von Äquivalenzen in der Sprache nicht möglich ist.

Kannst ja mal googeln wieviele Überetzungen der Bibel es gibt ;) und die sind richtig verschieden.

Du musst die libs und dein Programm immer mit dem selben Compiler bauen - da kannst du nicht mischen.

Verfasst: 22. April 2011 10:12
von Naku
Hehehe der Vergleich mit der Bibel ist Spitze :D Muss nicht googeln, ist mir schon lange aufgefallen ;) Was mich stutzig macht, is dass sie examples für mingw mitliefern, ihr aber alle sagt dass das ohne recompile nicht funktionieren wird. Der Quelltext ist aber definitv geschützt, die Vollversion kostet 199$... :evil: Ich würde euch das gerne glauben (zumal ich mich noch in der newbie-section einordne), aber WARUM gibts BEISPIELE?? Ich glaube immer noch daran, dass das irgendwie gehen sollte (sorry ;)).

Verfasst: 26. April 2011 10:59
von RHBaum
<klugsch... Modus ein>
DLLs von Visual Studio sind NICHT KOMPATIBEL mit MinGW!
Naja so generell sollt man das nicht ausdruecken.
Dlls mit C-Schnittstelle sind schon Kompatibel, weil das C-ABI definiert ist. Bei C++ haben die Compiler Hersteller zu viele Freiheiten, bzw ein ABI hat sich nicht durchgesetzt.
<klugsch... Modus aus>

Ist das relevant fuer Dich ?
Ja, weil diese XL Lib, wenn es diese "excel library for developers" ist, bietet auch eine Version mit C-Interface.
Diese koenntest du mit C++ unter mingw genau so nutzen wie mit jeglicher scriptsprache, die auch c-dlls verwenden kann (VBasic,Python,Java ...).
Ist nur etwas unhandlicher ....
DU kannst nicht ueber die Importlib linken, sondern musst 100% dynamisch laden. Und hasst natuerlich ein C-Klassen Interface (Handles), keine richtige c++ Klassen ....

Nenn passender Vergleich von Bibel zu Sprachen äquivalent zum Verhältniss C zu C++, faellt mir grad ned so ein .... naja vielleicht so in Richtung Bayrisch zu Esperanto :-) Der Oberpfälzer versteht den Oberbayern auf bayrisch sicher nicht, aber wuerden beide sauberes Esperanto sprechen ^^ Bleibt die Frage, gibt es die Bibel auch in Esperanto ...

Ciao ...

Verfasst: 7. Mai 2011 14:25
von saar
Hallo,

ich bin durch Nakus Beitrag auf diese lib gestoßen und habe sie soeben mal runtergeladen und die beigefügten c++ Beispiele mittels mingw ohne Probleme (fast, s.u.) compilieren, linken und ausführen können.
Kleines Problemchen: in performance.cpp fehlt mingw ein #include <stdlib.h>.

Im makefile wird die libxl.dll wie folgt gegen die dll gelinkt:

Code: Alles auswählen

g++ -o bin/format.exe -I ../../../include_cpp -Lbin -lxl format.cpp
Beim Ausführen von z.B. format.exe muss dann natürlich libxl.dll im Pfad oder im Verzeichnis des executable vorhanden sein.

Funktioniert einwandfrei (gleiches Verfahren habe ich auch schon bei anderen libs angewendet, die ebenfalls mit Microsoft compiliert waren).

Noch ein Dankeschön an Naku: Deine Frage hat mir die Suche nach einer entsprechenden Lib erspart. Ich werde in Kürze mal die libxl in meine Applikation integrieren und schauen, wie sie sich dort bewährt.