Как форвард, я начинаю начинать, когда дело доходит до Фортрана. Я потратил довольно много времени на другие вопросы на SO, но я не мог идентифицировать подобный вопрос, поэтому, пожалуйста, простите меня, если мое решение либо очевидно, либо уже получено ответное сообщение :)Нечетное значение, возвращаемое простой функцией Fortran
Я пытаясь научиться правильно внедрять самописную библиотеку Fortran в приложении VB.net. Я смог распознать VB DLL и выполнить функцию без каких-либо ошибок. Ошибка возникает скорее как ожидаемый результат по сравнению с фактическим выходом.
функция My Fortran DLL выглядит следующим образом:
function ex(i)
integer*4 i
ex=i+1
return
end
Очень простая функция, которая увеличивает переданный параметр на единицу и возвращает значение. (Я думаю). Приложение VB имеет следующий код.
<DllImport("ex.dll")> _
Public Shared Function ex(ByRef val As Integer) As Integer
End Function
Private Sub btn_Fortran_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btn_Fortran.Click
Console.WriteLine(ex(1))
End Sub
Итак, я передаю функция Ех целое значение 1. Таким образом, я бы ожидать, что значение 2 для записи на консоль. Вместо этого я получаю значение «1073741824» Не совсем точно. Любые идеи, в которых я, очевидно, не понимаю?
Я просто догадываюсь, так что это комментарий. Кажется, что передача константы 1 может быть неверной, поскольку параметр import определяется как ByRef. На самом деле мне кажется, что он не должен был строиться. Попробуйте объявить целое число и передать его 'ex'. Помимо этого, я попытался бы сузить, если это проблема с параметром или само возвращаемое значение. Измените функцию 'ex', чтобы просто вернуть константу; что могло бы помочь определить, был ли параметр принят неверным, или если возвращаемое значение не возвращается правильно. –