GCC を使用した Fortran と C バイナリのリンク
Fortran と C コードの両方を使用するプロジェクトのリンクは、関連するバイナリ間の非互換性により困難になる場合があります。図書館。 g または gfortran を使用してこのようなプロジェクトをコンパイルおよびリンクしようとすると、未定義の参照エラーが頻繁に発生します。
たとえば、次のコードを考慮してください。
<code class="fortran">subroutine print_hi() bind(C) implicit none write(*,*) "Hello from Fortran." end subroutine print_hi</code>
<code class="cpp">#include <iostream> extern "C" void print_hi(void); using namespace std; int main() { print_hi(); cout << "Hello from C++" << endl; return 0; }</code>
これらのファイルを g でコンパイルするまたは gfortran はオブジェクト ファイルを個別に生成しますが、それらを g を使用してリンクすると、Fortran ライブラリへの未定義の参照が発生します。同様に、gfortran を使用すると、C ライブラリへの未定義の参照が発生します。
この問題を解決するには、リンク段階で適切なライブラリをリンクする必要があります。 g の場合、これは、リンク コマンドに -lgfortran フラグを追加することで実現できます。
g++ main.o print_hi.o -o main -lgfortran
このフラグは、必要な Fortran ライブラリにリンクします。あるいは、gfortran を -lstdc フラグとともに使用して、必要な C ライブラリにリンクすることもできます。
gfortran main.o print_hi.o -o main -lstdc++
適切なリンク フラグを指定することで、プログラマは Fortran と C コードを組み合わせたプロジェクトを適切にリンクでき、次のことが可能になります。両方の言語の機能をアプリケーションで活用します。
以上がGCC を使用して Fortran と C バイナリをリンクする方法: 未定義の参照エラーを解決するためのガイドの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。