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: Alles auswählen
#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: Alles auswählen
0x9e70000
handle erhalten
3
adresse der fkt erhalten
alles okay
add.dll wird unter anderem unter /debug und C:/windows gesucht.
"Der erste Trunk aus dem Becher der Naturwissenschaften macht atheistisch, aber auf dem Grund des Bechers wartet Gott."
(W. Heisenberg)