qtforum.de Foren-Übersicht

QtWikiNeu: Zum Wiki  Qt-DocsQt-Dokumentation  Qt-PagesAndere Seiten zu Qt   
 FAQFAQ   SuchenSuchen   MitgliederlisteMitgliederliste   BenutzergruppenBenutzergruppen   RegistrierenRegistrieren ProfilProfil   Einloggen, um private Nachrichten zu lesenEinloggen, um private Nachrichten zu lesen   LoginLogin 

[gelöst] fremde dll einbinden ( LabView - QT )

 
Neues Thema eröffnen   Neue Antwort erstellen    qtforum.de Foren-Übersicht -> Sonstiges
Vorheriges Thema anzeigen :: Nächstes Thema anzeigen  
Autor Nachricht
24dan



Anmeldedatum: 26.06.2006
Beiträge: 243
Wohnort: position 23 Hamburg

BeitragVerfasst am: Mo Dez 28, 2009 12:09    Titel: [gelöst] fremde dll einbinden ( LabView - QT ) Antworten mit Zitat

Hallo,
ich habe mir unter einer anderen Programmiersprache (LabView8.2) eine dll gebaut die einfach zum Test zwei Zahlen (A, B) zum (*Erg) aufaddiert.

Ich habe schon im Forum und in der QT Hilfe gesucht. Wie bindet man den eine fremde dll ein?

Hier mal die Header für die dll
Code:

#include "extcode.h"
#pragma pack(push)
#pragma pack(1)

#ifdef __cplusplus
extern "C" {
#endif

double __stdcall Testadd(double A, double B);

long __cdecl LVDLLStatus(char *errStr, int errStrLen, void *module);

#ifdef __cplusplus
} // extern "C"
#endif

#pragma pack(pop)


Anbei die Fehlermeldung:

_________________
"Der erste Trunk aus dem Becher der Naturwissenschaften macht atheistisch, aber auf dem Grund des Bechers wartet Gott."
(W. Heisenberg)


Zuletzt bearbeitet von 24dan am Do Jan 14, 2010 11:26, insgesamt 2-mal bearbeitet
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Christian81



Anmeldedatum: 26.08.2004
Beiträge: 5296
Wohnort: Bremen

BeitragVerfasst am: Mo Dez 28, 2009 16:40    Titel: Antworten mit Zitat

LabView kann wohl nichts mit MinGW anfangen - da können wir auch nichts gegen machen. --> bei LaView anfragen.
_________________
MfG Christian

chehrlic.blogspot.com

Newbies bitte beachten!
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
24dan



Anmeldedatum: 26.06.2006
Beiträge: 243
Wohnort: position 23 Hamburg

BeitragVerfasst am: Mo Dez 28, 2009 17:47    Titel: Antworten mit Zitat

Ohje,
na da sehe ich schwarz. Wird wohl auf neuprogrammierung hinauslaufen. Rolling Eyes

_________________
"Der erste Trunk aus dem Becher der Naturwissenschaften macht atheistisch, aber auf dem Grund des Bechers wartet Gott."
(W. Heisenberg)
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Curtis Newton



Anmeldedatum: 11.06.2008
Beiträge: 117

BeitragVerfasst am: Di Dez 29, 2009 8:34    Titel: Antworten mit Zitat

24dan hat Folgendes geschrieben:
Ohje,
na da sehe ich schwarz. Wird wohl auf neuprogrammierung hinauslaufen. Rolling Eyes


Oder Du passt die platdefines.h für den mingw an. Keine Ahnung, wie und ob das geht.

C.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
24dan



Anmeldedatum: 26.06.2006
Beiträge: 243
Wohnort: position 23 Hamburg

BeitragVerfasst am: Mo Jan 04, 2010 11:13    Titel: Antworten mit Zitat

Also ich glaub das noch nicht ganz.
Hat jemand ein Beispiel wie man eine dll in QT Projekte einbindet?
Ich habe in meinem Beispiel nichts an der pro Datei geändert und müsste dort wohl wenigstens die dll als Resource angeben oder? Aber wie?

Bisher habe ich :
- nur die header datei eingebunden
- und die Fkt augerufen
- und die dll im gleichen Verzeichnis.

Rolling Eyes

_________________
"Der erste Trunk aus dem Becher der Naturwissenschaften macht atheistisch, aber auf dem Grund des Bechers wartet Gott."
(W. Heisenberg)
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Christian81



Anmeldedatum: 26.08.2004
Beiträge: 5296
Wohnort: Bremen

BeitragVerfasst am: Mo Jan 04, 2010 12:10    Titel: Antworten mit Zitat

Nochmal: Das ganze hat nichts mit irgendwelchen DLLs oder was auch immer zu tun sondern nur dass eine Header-Datei deinen Compiler nicht kennt. Und da die Header-Datei von LabView ist -> dort anfragen!
_________________
MfG Christian

chehrlic.blogspot.com

Newbies bitte beachten!
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
24dan



Anmeldedatum: 26.06.2006
Beiträge: 243
Wohnort: position 23 Hamburg

BeitragVerfasst am: Do Jan 14, 2010 10:56    Titel: Antworten mit Zitat

So da sind wir wieder (hat etwas gedauert...)
Mit Hilfe von NI habe ich es jetzt geschafft:
1. die dll dynamisch zu laden.
2. der "add" Funktion Parameter zu übergeben und
3. das Ergebnis erhalten!

Hier mal der dynamische Aufruf mit Funktion, Wertübergabe und Ausgabe...
Code:

#include <windows.h>
#include <stdio.h>

typedef double (__cdecl *funktion1)(double A, double B);
funktion1 f1;

Stuff...

    HINSTANCE hinstLib;
    BOOL fFreeResult, fRunTimeLinkSuccess = FALSE;
    // Get a handle to the DLL module.

      hinstLib = LoadLibraryA("add.dll");
      qDebug()<<hinstLib;

     // If the handle is valid, try to get the function address.
      if (hinstLib != NULL)
      {
          qDebug()<<"handle erhalten";
         f1 = (funktion1) GetProcAddress(hinstLib, "Add");
         qDebug()<<f1(1,2);

               // If the function address is valid, call the function.
         if (fRunTimeLinkSuccess = (f1 != NULL)) qDebug()<<"adresse der fkt erhalten";
         else qDebug()<<"schlecht";


               // Free the DLL module
         fFreeResult = FreeLibrary(hinstLib);
      }
      if (! fRunTimeLinkSuccess)qDebug()<<"tja keine Adresse";
      else qDebug()<<"alles okay";

Stuff...


Ausgabe meines Programms:
Code:

0x9e70000
handle erhalten
3
adresse der fkt erhalten
alles okay


add.dll wird unter anderem unter /debug und C:/windows gesucht.

Laughing

_________________
"Der erste Trunk aus dem Becher der Naturwissenschaften macht atheistisch, aber auf dem Grund des Bechers wartet Gott."
(W. Heisenberg)
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Beiträge der letzten Zeit anzeigen:   
Neues Thema eröffnen   Neue Antwort erstellen    qtforum.de Foren-Übersicht -> Sonstiges Alle Zeiten sind GMT + 1 Stunde
Seite 1 von 1

 
Gehe zu:  
Du kannst keine Beiträge in dieses Forum schreiben.
Du kannst auf Beiträge in diesem Forum nicht antworten.
Du kannst deine Beiträge in diesem Forum nicht bearbeiten.
Du kannst deine Beiträge in diesem Forum nicht löschen.
Du kannst an Umfragen in diesem Forum nicht mitmachen.
Du kannst Dateien in diesem Forum nicht posten
Du kannst Dateien in diesem Forum nicht herunterladen


Powered by phpBB © 2001, 2005 phpBB Group
Deutsche Übersetzung von phpBB.de

Impressum