online 1
gast (50)

/ Forum / Anwendungen(Java,C++...)

Anwendungen(Java,C++...)Anwendungen(Java,C++...)

Fragevon c++progr vom 23.08.2019, 20:43 Options

Fehler beim Einbinden einer Fortran dll in C++

Ich habe versucht eine Fortran dll in C++ einzubinden. (LoadLibrary, GetProcAdress).

Die Dll wird auch geladen, beim Aufruf der Funktion bekomme ich allerdings eine Fehlermeldung:

\chkesp.cThe 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

In Fortran soll sich die Funktion folgendermaßen aufrufen lassen
FUNCTION(CHAR* C1, CHAR*2, INTEGER)

Ich habe meine funktion mit typedef definiert. gibt es möglicherweise Probleme mit den Datentypen zwischen fortran und c++?


Antwort schreiben

Antwort 1 von asok vom 25.08.2019, 03:30 Options

Die Fehlermeldung sagt alles aus.

Die "calling convention" legt fest, wie die Parameterübergabe an Funktionen abläuft. Das ist je nach Sprache / Compiler unterschiedlich, bspw. von Fortran nach C++.

Du kannst Einfluss darauf nehmen, indem du die calling convention deiner Funktion (im typedef) so wählst, dass sie der der Fortran-Funktionen entspricht. Welche das ist, weiss ich nicht, aber es gibt in der Regel nur vier zur Auswahl (cdecl, stdcall, fastcall, pascal). Also sieh in deiner Compiler-Doku nach, wie man die Aufrufkonvention festlegt (das ist auch überall anders), und probier alle aus.

Ähnliche Themen

crtdll.dll fehler
sexyboy  12.01.2007 - 71 Hits -

In MS Access DLL einbinden ??
gudrun11  08.03.2007 - 126 Hits - 4 Antworten

Hinweis

Diese Frage ist schon etwas älter, Sie können daher nicht mehr auf sie antworten. Sollte Ihre Frage noch nicht gelöst sein, stellen Sie einfach eine neue Frage im Forum..

Neue Einträge

Version: supportware 1.9.150 / 10.06.2022, Startzeit:Thu Jan 8 21:07:44 2026