目前我正在研究一個需要將fortran代碼集成到C++的項目。在Fortran模塊中聲明瞭很多變量和數組。當相應的fortran聲明爲real * 8 rmax且模塊的名稱爲common_area時,我可以通過將c變量聲明爲extern double common_area_mp_rmax_來訪問c中的整型,浮點型和雙精度類型。但是,當我嘗試對數組做同樣的操作時,我得到錯誤。從C++訪問fortran模塊的變量
假設FORTRAN模塊中的代碼是: 真實* 8,分配,尺寸(:,:我cretaed AC雙指針,:) :: X
爲:
extern "C" { double* common_area_mp_x_; }
現在當我編譯整個項目時,它說「variable_area_mp_x_'的多重定義」。我正在使用CMake來編譯整個項目。 有人可以解釋我做錯了什麼嗎?我是fortran的新手,我很難解決這個問題。我感謝你的時間和幫助。
感謝, 精神狂歡
缺少'extern'? –
實際上我沒有用C語言聲明extern。我只是編輯並減少這種困惑..謝謝.. – mindbender
由於它只是一個基本變量(不是結構,函數或類),所以如果需要,也許可以在頭文件中省略double * common_area_mp_x_',然後在引用該變量的C++文件中聲明'extern double * common_area_mp_x_'。 –