Fortran Coder

查看: 411|回复: 5

[Module] debug能生成,release模式却会报错

[复制链接]

35

帖子

11

主题

0

精华

熟手

F 币
241 元
贡献
140 点
发表于 2022-1-12 17:28:27 | 显示全部楼层 |阅读模式
求助论坛的各位大大,如题:
有一些基础的module,姑且称为mod1、mod2、mod3,然后写了两个module,姑且称为mod_A、mod_B,
关系上:mod_A需要use mod1、mod2、mod3;mod_B需要use mod1、mod2、mod3和mod_A。

程序是这么写的:
mod_A里 use mod1、mod2、mod3,
mod_B里 use mod_A,
主程序里 use mod_B,
mod_A和mod_B都能单独通过编译,在debug模式下能成功生成文件并执行,换到release模式就生成失败了,报错信息为:
error #7002: Error in opening the compiled module file.  Check INCLUDE paths.   [MOD_A]
...
error #7002: Error in opening the compiled module file.  Check INCLUDE paths.   [MOD_B]
环境是 VS2010 + IVF 2013。不知道论坛的各位大大有遇到过类似情况吗?或者有啥排查方法、思路?

35

帖子

11

主题

0

精华

熟手

F 币
241 元
贡献
140 点
 楼主| 发表于 2022-1-12 17:37:12 | 显示全部楼层
在release模式下,改为mod_B里 use mod1、mod2、mod3和mod_A,也是报同样的错

17

帖子

0

主题

0

精华

熟手

F 币
312 元
贡献
118 点
发表于 2022-1-17 04:32:33 | 显示全部楼层
这取决于你的debug和release里面都用了编译器的哪些flag,如果用了一些比较激进的优化类flag编译器是会改写你的代码从出错的。比如说gfortran的"-ffast-math",官方文档里是这样写的“This option is not turned on by any -O option besides -Ofast since it can result in incorrect output for programs that depend on an exact implementation of IEEE or ISO rules/specifications for math functions.”所以这可能不仅仅是调用模块的问题,如果你要确保你的程序在一个比较激进的flag下也能得到正确的结果,你可能要在算法上检查一下。Intel的编译器我不算特别熟,但是类似的问题也会发生的,你可以参考一下这个intel社区的帖子

1768

帖子

13

主题

5

精华

论坛跑堂

臭石头雪球

F 币
511 元
贡献
196 点

美女勋章热心勋章星光勋章新人勋章贡献勋章管理勋章帅哥勋章爱心勋章规矩勋章元老勋章水王勋章

发表于 2022-1-17 08:13:59 | 显示全部楼层
你的问题应该是Intel fortran个别情况下,不能正确的判断依赖关系。
你先手动编译 model_A 和 module_B 就行了。

35

帖子

11

主题

0

精华

熟手

F 币
241 元
贡献
140 点
 楼主| 发表于 2022-1-17 15:42:07 | 显示全部楼层
唐汉 发表于 2022-1-17 04:32
这取决于你的debug和release里面都用了编译器的哪些flag,如果用了一些比较激进的优化类flag编译器是会改写 ...

感谢回复

35

帖子

11

主题

0

精华

熟手

F 币
241 元
贡献
140 点
 楼主| 发表于 2022-1-17 15:42:52 | 显示全部楼层
fcode 发表于 2022-1-17 08:13
你的问题应该是Intel fortran个别情况下,不能正确的判断依赖关系。
你先手动编译 model_A 和 module_B 就 ...

感谢回复我晚点试试
您需要登录后才可以回帖 登录 | 极速注册

本版积分规则

捐赠本站|Archiver|关于我们 About Us|Fcode ( 京ICP备18005632-2号 )

GMT+8, 2022-8-17 17:59

Powered by Tencent X3.4

© 2013-2022 Tencent

快速回复 返回顶部 返回列表