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 Double
    

    Wo 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?


Anmelden zum Antworten