Все мои источники на Фортране скомпилированы в порядке с
gfortran -g -c fortran_source.f
и заархивированы в одной библиотеке под названием "mylibrary.a". Там есть интересующая функция под названием "myfunction"
В моем файле C ++ у меня есть:
extern "C" void myfunction_(/* all pointers */);
int main(){
cerr << "Mark 1" << endl;
myfunction_(/* all pointers or address_of my variables */);
cerr << "Mark 2" << endl;
}
Я компилирую свой исполняемый файл c ++, связывая библиотеку с
g++ mainfile.cpp -L./ -lmylibrary -lgfortran
Нет ошибок или предупреждений ...
Однако, когда я запускаю свою программу, она зависает в первой точке, где вызывается myfunction (выводит «Mark1», но не «Mark 2») ...
Обратите внимание, что эта программа правильно собирается и работает на компьютере с Linux сifort (link -lifcore).
Большое спасибо!