DLL Function Calling Convention
-
Hallo Leute,
ich bin noch ein Anfänger was die Programmierung betrifft und habe nun ein Problem bei dem ich gern die Hilfe des Forums in Anspruch nehmen möchte.
In einer Anwendung lade ich mitLoadLibrary()
eine DLL und bekomme über
GetProcAddress(..)
eine von der DLL exportierte Funktion. Jetzt kann die Calling Convention der exportierten Funktion sowohl _stdcall als auch _cdecl sein.
In der Hauptanwendung die die DLL nachlädt, muss vom Anwender angegeben werden, welche Calling Convention unterstützt werden soll.
Wenn jetzt aber die Nutzerauswahl nicht zu dem Typ der exportierten Funktion passt, dann stürzt mir meine gesamte Anwendung ab wenn die Funktion aufgerufen wird.The value of ESP was not properly saved across a function call. This is usually a result of calling a function declared with one calling convention with a function pointer declared with a different calling convention..
Meine Frage ist nun, kann ich diesen Runtime Error irgendwie abfangen?
Gibt es von Microsoft vielleicht eine exception die ich fangen kann?Vielen Dank schon mal.
Grüße, Taubi
-
Du darfst den Crash gar nicht erst zulassen! Abfangen und weitermachen kann es wohl nicht sein. Ansonsten schau Dir SEH Exceptions an.
Du kannst das auf Assembler Ebene lösen, dazu war erst kürzlich hier ein Thread.
http://www.microsoft.com/communities/newsgroups/en-us/default.aspx?dg=microsoft.public.de.vc&tid=fde48e82-7430-4ac8-b820-34e11a8a4709Die vorgeschlagene Lösung von Andreas Heyer ist wirklich simpel.
-
Danke für den Link,
ich werde mir die Sache mal anschauhen.
Obgleich ich glaube das es mit meinen
Erfahrungen noch etwas früh für Assembler ist.Grüße, Taubi
-
Hallo Martin!
Habe gerade das gleiche Problem mit der Calling Convention. Leider geht der von dir gepostete Linkt nicht mehr, und eine Suche nach Andreas Heyer ergab zwar einige Threads, aber in keinem konnte ich was zu der von dir angesprochenen Lösung finden. Hast du noch einen funktionierenden Link?Danke und Gruß
Vanish