lib/dll mit QLibrary unter Windows

Alles rund um die Programmierung mit Qt
Antworten
coffeejunky24
Beiträge: 16
Registriert: 24. April 2006 20:49
Wohnort: RhPf
Kontaktdaten:

lib/dll mit QLibrary unter Windows

Beitrag von coffeejunky24 »

Hallo Allerseits!

Ich versuche gerade unter Windows, mit QT schön grafisch aufbereitet, meinen Parallel-Port zu beschreiben.
Das ist (unter Win 32bit) offensichtlich nur durch Verwendung einer dll möglich, welche die benötigten Funktionen für das Beschreiben zur Verfügung stellt.

Eine solche dll samt Source Code, geschrieben in C++, fand ich bei http://www.logix4u.net/.
Die Testprogramme funktionierten einwandfrei.

Jetzt stehe ich als ungeschickter Programmierstümper vor der Frage, wie ich in Qt auf die Funktionen am geschicktesten zugreife.
In der Dokumentation fand ich QLibrary. Sieht auf den ersten Blick schön einfach aus, beim weiteren lesen war ich aber total verwirrt -> unter Windows funktioniert das nur wenn in der DLL die Funktionen in einen externen "C" Block gehüllt sind?! Ich glaube das sind sie nicht (da c++ Datei) :( Unter Windows bedarf das einem dllexport macro?! Was is das nu wieder..

Als blutiger Anfänger, der versucht sich alles selbst beizubringen, verstehe ich hier nur Bahnhof und befürchte tagelang herumzuprobieren und am Ende ganz falsch angefangen zu haben.

Ich habe also eine dll-Datei und eine lib-Datei (siehe Link). Wie kann ich nun auf die 2 Funktionen der DLL unter Qt am Einfachsten drauf zugreifen? Wie würdet Ihr das machen? (ich habe in einerm anderen Thread zB was über linken der lib gefunden..)

Vielen Dank schonmal in Voraus
Christian81
Beiträge: 7319
Registriert: 26. August 2004 14:11
Wohnort: Bremen
Kontaktdaten:

Beitrag von Christian81 »

Ok, kurz zusammengefasst

Einfach gesagt kann man DLLs in Windows nicht mischen - d.h. eine mit MinGW erstellte DLL kann nicht mit MSVC genutzt werden und umgekehrt (unter bestimmten Bedingungen geht es, aber das ist zu kompliziert).
Wenn Du also die DLL(und lib + header) für deinen Compiler hast, sollte es kein Problem sein. Ist dem nicht so, musst Du die DLL aus den Sourcen erzeugen. Dann muss Du auch auf das dllexport/dllimport - Problem aufpassen.
Ich gehe mal davon aus, dass Du die richtige Lib hast. Zum Linken musst Du sie einfach im pro-File hinzufügen wie hier beschrieben:
http://doc.trolltech.com/4.1/qmake-vari ... .html#libs
MfG Christian

'Funktioniert nicht' ist keine Fehlerbeschreibung
Einmaliger
Beiträge: 48
Registriert: 22. Juli 2006 11:42

Beitrag von Einmaliger »

Such dir besser eine C-DLL. Bei C++ hast du wirklich ein Problem, wenn verschiedene Compiler verwendet werden.
Christian81
Beiträge: 7319
Registriert: 26. August 2004 14:11
Wohnort: Bremen
Kontaktdaten:

Beitrag von Christian81 »

Einmaliger hat geschrieben: Warum sollte das nicht gehen? Bei C++-DLLs ist es klar, wegen nicht standardisiertem Name-Mangling, aber alle anderen sollten problemlos gehen. Man muss die Funktionen halt als extern "C" __declspec(dllimport) deklarieren, und eventuell noch die Aufrufkonventionen mit "__stdcall" festlegen, sonst wüßte ich absolut nichts, was da schiefgehen sollte.
Ich habe auch nie gesagt dass es nicht geht - ich habe nur gesagt dass man dann ganz schön aufpassen muss und es nicht unbedingt für einen Anfänger ratsam ist, sich mit sowas zu beschäftigen - da ist es meist sinnvoller die lib einfach mit seinem Compiler zu kompilieren und fertig.
MfG Christian

'Funktioniert nicht' ist keine Fehlerbeschreibung
Einmaliger
Beiträge: 48
Registriert: 22. Juli 2006 11:42

Beitrag von Einmaliger »

Sorry, ich hab meinen Beitrag eben editiert, da ich gesehen habe, dass es ja um eine C++-DLL geht. Und das macht die Sache in der Tat schwierig.
Antworten