<small id='cdOr0'></small><noframes id='cdOr0'>

    <legend id='cdOr0'><style id='cdOr0'><dir id='cdOr0'><q id='cdOr0'></q></dir></style></legend>

      <i id='cdOr0'><tr id='cdOr0'><dt id='cdOr0'><q id='cdOr0'><span id='cdOr0'><b id='cdOr0'><form id='cdOr0'><ins id='cdOr0'></ins><ul id='cdOr0'></ul><sub id='cdOr0'></sub></form><legend id='cdOr0'></legend><bdo id='cdOr0'><pre id='cdOr0'><center id='cdOr0'></center></pre></bdo></b><th id='cdOr0'></th></span></q></dt></tr></i><div id='cdOr0'><tfoot id='cdOr0'></tfoot><dl id='cdOr0'><fieldset id='cdOr0'></fieldset></dl></div>
      <tfoot id='cdOr0'></tfoot>
      • <bdo id='cdOr0'></bdo><ul id='cdOr0'></ul>

    1. 使用 gcc 链接 Fortran 和 C++ 二进制文件

      时间:2023-09-19
      <i id='fKicr'><tr id='fKicr'><dt id='fKicr'><q id='fKicr'><span id='fKicr'><b id='fKicr'><form id='fKicr'><ins id='fKicr'></ins><ul id='fKicr'></ul><sub id='fKicr'></sub></form><legend id='fKicr'></legend><bdo id='fKicr'><pre id='fKicr'><center id='fKicr'></center></pre></bdo></b><th id='fKicr'></th></span></q></dt></tr></i><div id='fKicr'><tfoot id='fKicr'></tfoot><dl id='fKicr'><fieldset id='fKicr'></fieldset></dl></div>
          <bdo id='fKicr'></bdo><ul id='fKicr'></ul>

            <tbody id='fKicr'></tbody>
          <tfoot id='fKicr'></tfoot>
        • <legend id='fKicr'><style id='fKicr'><dir id='fKicr'><q id='fKicr'></q></dir></style></legend>
        • <small id='fKicr'></small><noframes id='fKicr'>

                本文介绍了使用 gcc 链接 Fortran 和 C++ 二进制文件的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

                问题描述

                我可以使用 gcc 分别使用 g++ 或 gfortran 在 C 和 C++ 之间或 C 和 Fortran 之间进行调用.但是,如果我尝试在 C++ 和 Fortran 之间进行过程调用,则在使用 g++ 或 gfortran 进行编译时会出错,因为两者都不知道对方所需的库.

                I can use gcc to make calls between C and C++ or between C and Fortran by using g++ or gfortran, respectively. But if I try to make procedure calls between C++ and Fortran I get errors when compiling with either g++ or gfortran because neither knows about the other's required libraries.

                如何链接使用 C++ 和 Fortran 编写的源代码的项目?

                How can I link a project that uses source code written in both C++ and Fortran?

                $ cat print_hi.f90
                subroutine print_hi() bind(C)
                  implicit none
                  write(*,*) "Hello from Fortran."
                end subroutine print_hi
                
                $ cat main.cpp
                #include <iostream>
                
                extern "C" void print_hi(void);
                
                using namespace std;
                
                int main() {
                  print_hi();
                  cout << "Hello from C++" << endl;
                  return 0;
                }
                $ gfortran -c print_hi.f90 -o print_hi.o
                $ g++ -c main.cpp -o main.o
                

                我尝试用 g++ 链接:

                I try linking with g++:

                $ g++ main.o print_hi.o -o main
                print_hi.o: In function `print_hi':
                print_hi.f90:(.text+0x3f): undefined reference to `_gfortran_st_write'
                

                以及关于未定义引用的进一步错误.

                and further errors regarding undefined references.

                使用 gfortran:

                And with gfortran:

                $ gfortran main.o print_hi.o -o main
                main.o: In function `main':
                main.cpp:(.text+0xf): undefined reference to `std::cout'
                

                ...等等.

                如何将使用 gfortran 和 g++ 库的二进制文件链接在一起?

                How can I link binaries using the gfortran and g++ libraries together?

                推荐答案

                您正在寻找g++ main.o print_hi.o -o main -lgfortran 在标准 Fortran 库中链接.

                You're looking for g++ main.o print_hi.o -o main -lgfortran to link in the standard Fortran libraries.

                你也可以通过传递-lstdc++来使用gfortran.

                You can also use gfortran by passing -lstdc++.

                这篇关于使用 gcc 链接 Fortran 和 C++ 二进制文件的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持html5模板网!

                上一篇:如何打开(字面意思)所有 GCC 的警告? 下一篇:std::stoi 在 MinGW 上的 g++ 4.6.1 中不存在

                相关文章

                最新文章

                  <tfoot id='rCexo'></tfoot>
                1. <legend id='rCexo'><style id='rCexo'><dir id='rCexo'><q id='rCexo'></q></dir></style></legend>
                  <i id='rCexo'><tr id='rCexo'><dt id='rCexo'><q id='rCexo'><span id='rCexo'><b id='rCexo'><form id='rCexo'><ins id='rCexo'></ins><ul id='rCexo'></ul><sub id='rCexo'></sub></form><legend id='rCexo'></legend><bdo id='rCexo'><pre id='rCexo'><center id='rCexo'></center></pre></bdo></b><th id='rCexo'></th></span></q></dt></tr></i><div id='rCexo'><tfoot id='rCexo'></tfoot><dl id='rCexo'><fieldset id='rCexo'></fieldset></dl></div>

                      <bdo id='rCexo'></bdo><ul id='rCexo'></ul>
                  1. <small id='rCexo'></small><noframes id='rCexo'>