Rumah >pembangunan bahagian belakang >C++ >Bagaimana Memautkan Fortran dan Binari C Menggunakan GCC: Panduan untuk Menyelesaikan Ralat Rujukan Tidak Ditakrifkan?
Memautkan Fortran dan Binari C Menggunakan GCC
Memautkan projek yang menggunakan kedua-dua kod Fortran dan C boleh mencabar kerana ketidakserasian antara yang berkaitan perpustakaan. Apabila cuba menyusun dan memautkan projek tersebut menggunakan g atau gfortran, ralat rujukan yang tidak ditentukan sering berlaku.
Sebagai contoh, pertimbangkan kod berikut:
<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>
Menyusun fail ini dengan g atau gfortran secara berasingan menghasilkan fail objek, tetapi memautkannya bersama-sama menggunakan g menghasilkan rujukan yang tidak ditentukan kepada perpustakaan Fortran. Begitu juga, penggunaan gfortran menghasilkan rujukan yang tidak ditentukan kepada perpustakaan C.
Untuk menyelesaikan isu ini, adalah perlu untuk memautkan dalam perpustakaan yang sesuai semasa peringkat pemautan. Untuk g , ini boleh dicapai dengan menambahkan bendera -lgfortran pada arahan pautan:
g++ main.o print_hi.o -o main -lgfortran
Bendera ini akan dipautkan dalam perpustakaan Fortran yang diperlukan. Sebagai alternatif, gfortran boleh digunakan dengan bendera -lstdc untuk dipautkan dalam perpustakaan C yang diperlukan:
gfortran main.o print_hi.o -o main -lstdc++
Dengan menentukan bendera pemautan yang sesuai, pengaturcara boleh berjaya memautkan projek yang menggabungkan kod Fortran dan C, membenarkan mereka untuk memanfaatkan keupayaan kedua-dua bahasa dalam aplikasinya.
Atas ialah kandungan terperinci Bagaimana Memautkan Fortran dan Binari C Menggunakan GCC: Panduan untuk Menyelesaikan Ralat Rujukan Tidak Ditakrifkan?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!