У меня проблема с передачей массива из Фортрана в функцию c:
В Фортране массив определен как
REAL(KIND=real_normal) , DIMENSION(:), ALLOCATABLE :: array
call cFunc(array)
Если определить cFunc как
void cFunc(double *data){...}
Чем данные содержат только «мусорные» значения. Где проблема в этом случае? (с целыми числами хорошо работает это решение).
ТНХ.
РЕДАКТИРОВАТЬ:
Моя платформа:
Компилятор: VS 2008, версия Intel Compiler 11
ОС: Win7
РЕДАКТИРОВАТЬ 2:
Я определяю интерфейс для c-функции следующим образом (код сводится к одному элементу, что создает проблемы, у реальной функции больше параметров):
interface c_interface
subroutine cFunc(array) bind (C, name = "cFunc")
use iso_c_binding
REAL(c_double), DIMENSION(*)::array
end subroutine cFunc
Памяти в фортране выделяется
ALLOCATE (array(numberOfElements))
call cFunc(array)
В данный момент я получаю ошибку времени выполнения "Переполнение с плавающей точкой". В некоторых случаях массив правильных элементов.