Supportnet Computer
Planet of Tech

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

Fehler beim Einbinden einer Fortran dll in C++





Frage

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 1 von asok

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.

Ich möchte kostenlos eine Frage an die Mitglieder stellen:


Ähnliche Themen:


Suche in allen vorhandenen Beiträgen: