Ich habe ein bestehendes VB6 Programm, das einen Fortran-DLL mit der folgenden Definition nennt:Stack-Überlauf Ausnahme Aufruf Fortran DLL-Funktion von C#
Declare Function START Lib "BackEndLib2.dll" Alias "[email protected]"() As Integer
Wir sind in dem Prozess zu C#, um die VB6 Anwendung von Migration (.net 4.0) und die Definition ist nun wie folgt:
[DllImport("BackEndLib2.dll", EntryPoint = "[email protected]")]
public static extern short START();
Allerdings, wenn ich den gleichen Funktionsaufruf in C# aufrufe, es führt den dLL-Aufruf liefert erfolgreich verwalteten Code und als wirft eine Stapelüberlaufausnahme nach einer Weile.
Ich habe auch versuchte den gleichen DLL-Aufruf in VB.net mit dem gleichen Ergebnis:
Declare Function START Lib "BackEndLib2.dll" Alias "[email protected]"() As Short
Jede Idee, warum der gleiche Funktionsaufruf 4.0 einen Stapelüberlauf Ausnahme in .NET liefert aber arbeitet erfolgreich in VB6?
Ich vermute, ich verdirre den Stapel mit dem DLL-Aufruf, aber ich bin mir nicht sicher. Ich habe viele verschiedene Parameter getestet, aber bisher hat noch nichts funktioniert.
Bearbeiten: Dies scheint nur ein Problem in WPF und wenn ich das gleiche Beispiel in Windows Forms erstellen, stürzt es nicht ab.
Gibt es irgendeinen Grund, warum Sie von einem 'Integer' in Ihrer VB6-Version zu einem' short' in der C# gehen? – msarchet
Ich lese, dass VB6 Integer auf ein .net Short mappt. Ich habe auch versucht, Integer als Rückgabetyp, aber das hat auch nicht funktioniert. – Niro