Связывание файлов объектов FORTRAN и C ++ - PullRequest
1 голос
/ 01 сентября 2011

Я собираюсь вызвать функцию C ++ из FORTRAN, для которой я использую модуль ISO_C_Binding. После сжатия основного файла FORTRAN и функции C ++ с помощью команд

 gfortran -c mlp8.f90

 g++ -c mean_cpp.cc

Который будет создавать файлы объектов, но на этапе компоновки, как предлагают некоторые члены, я собираюсь использовать команды

 g++ mlp8.o mean_cpp.o -o main –lgfortran

т.е. используя компилятор C ++ со ссылками на библиотеки FORTRAN, но он выдает ошибку типа

 /Cygnus/cygwin-b20/H-i586-cygwin32/i586-win32/bin/ld: 
   cannot open –lgfortran: No such a file or directory 

 Collect2:ld return 1 exit status 

Таким образом, я думаю, что основная проблема в том, что компоновщик g++ не может связываться с библиотеками FORTRAN, поэтому может потребоваться указать какой-либо путь в параметре компоновки или может потребоваться выполнить некоторые настройки в g++ complier, который я не знаю, как это сделать, поэтому, пожалуйста, помогите разобраться с этой проблемой.

1 Ответ

3 голосов
/ 01 сентября 2011

Вы должны найти файл libgfortran.* (например, с locate из find / -name "libgfortran.*"; или в windows-way Win+g, F3 или любом файловом менеджере), записать путь к нему и сделать

 g++ mlp8.o mean_cpp.o -o main -LPATH_RECORDED –lgfortran

где PATH_RECORDED - это путь.

Попробуйте этот список библиотек (получил его из моего mingw gfortran с параметром -v)

 g++ mlp8.o mean_cpp.o -o main -LPATH_RECORDED –lgfortran -lmingw32 -lgcc_s -lgcc -lmoldname  -lmingwex -lmsvcrt
...