DLL dynamisch laden: Bei Funktionsaufruf Fehler!?
-
Hallo Forum,
ich möchte die Funktionen einer dynamischen DLL benutzen.
#include "stdafx.h" #include <stdio.h> #include <windows.h> int main(){ double retval=0; HINSTANCE DllInstance=0; typedef double (__stdcall *IMPFUNC) (double, double); IMPFUNC DllFunktion; DllInstance = LoadLibrary("ABC.DLL"); if (DllInstance) { DllFunktion = (IMPFUNC)GetProcAddress(DllInstance, "myfunc"); retval = DllFunktion(1.1, 2.2); } if (DllInstance) if (FreeLibrary(DllInstance)) DllInstance = NULL; return 0; }Bei "retval = DllFunktion(1.1, 2.2);" gibt es einen Fehler: Unbehandelte Ausnahme.
Wenn ich in Excel bin kann ich die Funktion so einbinden:Declare Function myfunc Lib "abc.DLL" (ByRef p As Double, ByRef T As Double) As DoubleWo liegt der Fehler? (Excel benutzt stdcall.)
Marlon
-
Ach ja: Wenn ich mit tdump an die dll herangehe bekomme ich diesen Funktionsausszug:
00001210 12 0000 MYFUNC
Eben habe ich es MYFUNC in meinem Prog auch groß geschrieben. Immer noch der selbe Fehler.
In "DllFunktion" steht nach dieser Zeile "DllFunktion = (IMPFUNC)GetProcAddress(DllInstance, "myfunc");" auch die "1210" drin. Scheint richtig geladen worden zu sein...
-
Die Frage ist nicht mehr wichtig. Ich steuere Excel an. Ist zwar dreckig... es muß aber fertig werden;-)
-
Hallo Leute,
gerade jetzt ist die Frage wieder wichtig geworden;-)
Kann es sein das meine dll eine ActiveX dll ist?
Eine normale C DLL hat bei tdump diesen Eintrag:
Flags 210E [ executable backwards 32bit library ]Die dll die ich laden will hat diesen Eintrag:
Flags A18E [ executable 32bit library ]Könnte es sein das "executable 32bit library " eine ActiveX dll meint?
Marlon
-
Sagt GetLastError() was brauchbares?