【问题标题】:Compiling DISLIN gfortran编译 DISLIN gfortran
【发布时间】:2018-01-03 19:51:02
【问题描述】:

我在编译引用 DISLIN 的 Fortran 代码时遇到问题。我已经从网站下载了 DISLIN,解压缩了文件并运行了设置。我添加了一个名为 DISLIN (C:\dislin) 的环境变量,并将 C:\dislin\win 添加到我的系统变量的 PATH 部分。

我正在尝试编译 DISLIN 网站的一些示例代码,其中包括行

USE DISLIN

我正在使用 MinGW shell 使用命令 gfortran -o progrname -ldislin EX11_1.f90 进行编译,并收到以下错误:

致命错误:无法在 (1) 打开模块文件“dislin.mod”进行读取:没有这样的文件或目录。

我尝试更改变量路径,甚至移动 dislin.mod 文件(在那里),但仍然收到相同的消息。

【问题讨论】:

    标签: fortran mingw gfortran


    【解决方案1】:

    好的,我解决了这个问题,所以我想我会回来发布对我有用的东西,以防其他人需要它......

    1. 在 C 盘上安装 DISLIN 和 MinGW
    2. 将 /c/dislin 中的 disgf.a 和 /c/dislin/gf 中的 dislin.f90 复制到包含您的 fortran 文件的目录中 (对我来说这是 /c/MinGW/pnote)
    3. 使用 MinGW shell 导航到您的文件:cd /c/MinGW/pnote
    4. 编译 dislin.f90 和你的 fortran 程序:gfortran -c dislin.f90 progName.f90(dislin.f90 显然只需要执行一次)
    5. 链接库等并编译:gfortran progName.o disgf.a -luser32 -lgdi32 -lopengl32 -o exeName
    6. '运行'exeName

    【讨论】:

      【解决方案2】:

      您可能需要指定 DISLIN 模块文件的路径:

      gfortran EX11_1.f90 -o progrname -ldislin -I/path/to/DISLIN/modules
      

      如果还没有像here 描述的那样配置,还有库本身的路径:

      gfortran EX11_1.f90 -o progrname -ldislin -I/path/to/DISLIN/modules \
               -L/path/to/DISLIN/library 
      

      【讨论】:

      • 非常感谢,文件现在可以编译,但是现在显示一个新错误。对于在 EX11_1 中调用的每个子例程,它都显示“未定义对 'subroutine_title' 的引用”。我已经检查过了,它们是按照 dislin 模块中的定义被调用的。关于解决方案的任何想法?
      【解决方案3】:

      他们提供了一个批处理文件(windows)来为你进行编译和链接。

      f90link -c My_Program
      

      这位于 c:\dislin\Win

      此外,如果您在使用位于 c:\dislin\gf 中的 dislin.mod 文件时遇到问题,请使用 -c 编译选项重新编译该文件。我在 c:\dislin\readme.inf 中找到了所有这些信息

      【讨论】:

        【解决方案4】:

        据我所知(2018 年 1 月)dislin(64 位)在 gfortran 7.2 期间惨遭失败;并且可能与许多其他较新的编译器一起使用。 尝试链接时,gfortran 7 说“dislin.mod”是一种无法识别的格式。 我认为这个程序高度依赖于完全正确的版本同步 - 经过多年的研究,恕我直言,这使得此类软件毫无用处。

        不,各种“路径”的正确性似乎没有帮助。

        毕竟,gnuplot 可以“完全”工作。不知道为什么我花了这么多时间在品牌 x 上。 jrc

        【讨论】:

        • 如果你使用预编译的模块文件,你必须使用与生成模块文件相同的编译器和相同的版本。无论您使用 Gfortran 7.2、Intel 18 还是 xyz 版本 42,都必须使用与预编译库相同的编译器。
        • 这意味着你必须编译定义模块的任何头文件(可能是displin.f90,根据stackoverflow.com/a/19390203/721644 并使用你将用于程序的相同编译器重新编译它。
        猜你喜欢
        • 1970-01-01
        • 2023-03-04
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2014-12-27
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多