В настоящее время я работаю над проектом, который требует интеграции кода fortran в C++. В модуле fortran объявлено множество переменных и массивов. Я могу получить доступ к типам integer, float и double из c, объявив переменную c как extern double common_area_mp_rmax_, когда соответствующее объявление fortran — real*8 rmax, а имя модуля — common_area. Однако, когда я пытаюсь сделать то же самое для массива, я получаю сообщение об ошибке.
предположим, что код в модуле fortran: real*8,allocatable,dimension(:,:,:) :: x
Я создал двойной указатель c как:
extern "C"
{
double* common_area_mp_x_;
}
Теперь, когда я компилирую весь проект, он говорит «множественное определение `variable_area_mp_x_'». Я использую CMake для компиляции всего проекта. Может кто-нибудь пролить свет, что я делаю неправильно? Я новичок в фортране, и мне становится трудно это исправить. Я ценю ваше время и помощь.
Спасибо, умник
double * common_area_mp_x_
из файлов заголовков, а затем объявитьextern double * common_area_mp_x_
в файле C++, где вы ссылаетесь на эту переменную. - person J.J. Hakala   schedule 22.01.2016