我有一個Fortran子程序,我想從C++程序調用。它需要的浮點參數的長列表,並使用ISO_C_BINDING內在模塊:從C++調用Fortran子程序,鏈接時未定義的參考
subroutine parasolve (......) bind (c, name='c_parasolve')
use,intrinsic :: iso_c_binding
implicit none
....
基於我讀過,我明白,我需要使用C++的‘外部’命令之前定義的外部函數稍後再調用它。我嘗試了兩種方法。第一:
extern "C" void c_parasolve(....);
收益「預期字符串之前不合格-ID常量」在編譯時,而第二:
extern void c_parasolve(....);
編譯得很好,但失敗「未定義的引用「c_parasolve(鏈接....)'」和ld返回1
我與編譯:
g++ -c main.cpp
等c和
gfortran -ffree-form -std=f2003 -c parasolve.f03
,讓他們進入的.o的ELFs,然後嘗試與鏈接:
g++ main.o otherfiles.o parasolve.o -lgfortran
什麼是調用此Fortran函數的正確方法?
你有什麼命令來編譯和鏈接這段代碼? –
我編輯它以顯示命令 – nathanvy
,所以我認爲你在第一行得到上述錯誤。是G ++ -c main.cpp? – Ali786