Fortran Coder

查看: 1513|回复: 3

[编译器] X64的exe不可以运行,x86的却可以运行?

[复制链接]

68

帖子

23

主题

0

精华

熟手

F 币
244 元
贡献
132 点
发表于 2023-2-23 20:13:46 | 显示全部楼层 |阅读模式
实在是搞不明白怎么回事。我用的是VS2022版。在IDE里直接点击菜单栏上的“开始执行(不调试)”按钮,运行没有问题,此时我选的是X64,Release。但是我把X64文件里的exe文件copy出来,放在*.sln所在文件夹,就一闪而过,只执行了代码中的前一部分。但是我选择x86,release编译后,在IDE里直接点击菜单栏上的“开始执行(不调试)”按钮,运行没有问题,我把这样生成的exe放在*.sln所在文件夹,就可以正确运行。实在不知道是怎么回事了。
后来调试了,发现x64的exe在执行到下面这行时,就停止,一闪而过了。但也没有看出这行代码有何问题。由于不方便把整个代码贴出来,就想请大家试着帮我分析下。这个Out_FlowField.bin也是放在*.sln所在文件夹.
  Open(Unit=32, File="Out_FlowField.bin", Form="UNFORMATTED", Access="stream", Status="old")。


68

帖子

23

主题

0

精华

熟手

F 币
244 元
贡献
132 点
 楼主| 发表于 2023-2-24 09:09:59 | 显示全部楼层
经过自己一晚上的试验,实 在没有发现什么错误。大早上突然想起来,是不是因为最近装了新软件Tecplot和visIt,因为把以前编译的程序拿出来,双击,竟然也无法运行,弹出对话框提示"无法定位程序输入点for stop core quiet 于动态链接库上"。就把这两软件卸载。再双击,OK,没有问题了。实在是……。

784

帖子

2

主题

0

精华

大宗师

F 币
3745 元
贡献
2246 点
发表于 2023-2-26 09:59:11 | 显示全部楼层
这种一般是动态库版本混乱造成的,尤其是公共库,比如omp。假设编译器自带用的1.0版本,新安装软件里面又带了2.0,这时候有可能就搜索到新的dll,造成上述问题。
解决思路就是让程序找到正确的那个dll。比如把正确的那个dll和exe放在一起。

68

帖子

23

主题

0

精华

熟手

F 币
244 元
贡献
132 点
 楼主| 发表于 2023-2-28 14:51:26 | 显示全部楼层
li913 发表于 2023-2-26 09:59
这种一般是动态库版本混乱造成的,尤其是公共库,比如omp。假设编译器自带用的1.0版本,新安装软件里面又带 ...

非常感谢。但代码里面并没有用到任何其它dll。再遇到的话,我会按你的方法尝试下,谢谢了
您需要登录后才可以回帖 登录 | 极速注册

本版积分规则

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

GMT+8, 2024-2-27 19:20

Powered by Tencent X3.4

© 2013-2024 Tencent

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