C ++をFortranプログラムにリンクすることは、すべてが外部「C」内に存在しない限り、名前がマングリングするため、ほぼ不可能です。または、インターフェースextern"C"と実装C++を作成することもできます。
これは、既存のFortranライブラリを他の記事の内容であるC++プログラムにリンクする方法です。
1)Fortranサブプログラム(worker.forなど)を作成します。これはF77なので、6つの先頭のスペースを覚えておいてください
subroutine printhi
print *, 'it works'
end subroutine
2)それを呼び出すC ++プログラム、たとえばboss.cppを作成します。Fortranルーチン名の末尾の下線に注意してください
#include <iostream>
// Avoid any name mangling
extern "C"
{
extern void __attribute__((stdcall)) printhi_(void);
}
int main()
{
std::cout << "Calling fortran" << std::endl;
printhi_();
std::cout << "Returned to C++" << std::endl;
}
3)F77ルーチンを構築します
gfortran -c worker.for
4)C++プログラムをビルドしてリンクします。fortranライブラリを追加して、Fortran固有のビットを解決します。
g++ boss.cpp worker.o -o cboss -L/usr/lib -lgfortran
5)プログラムを実行します
./a.out