Fortran Coder

查看: 694|回复: 10

[编译器] 什么代码可以关闭运行窗口,不用一直停在press any key to con...

[复制链接]

24

帖子

8

主题

0

精华

入门

F 币
99 元
贡献
54 点
发表于 2022-10-26 21:49:31 | 显示全部楼层 |阅读模式
能不能在程序的最后加一些代码,使程序运行结束后,屏幕不是一直停在press any key to continue,而是由执行这些代码来关闭这个窗口,不需要手动去关闭?
有没有参考资料,高手可否提示一下?

202

帖子

2

主题

0

精华

宗师

F 币
1504 元
贡献
781 点

规矩勋章

发表于 2022-10-27 08:20:14 | 显示全部楼层
在VS里执行要按任意键退出,直接双击编译后的程序执行不会有这个提示,运行后自动退出。

评分

参与人数 1F 币 +1 收起 理由
kyra + 1 正解

查看全部评分

24

帖子

8

主题

0

精华

入门

F 币
99 元
贡献
54 点
 楼主| 发表于 2022-10-27 09:38:49 | 显示全部楼层
necrohan 发表于 2022-10-27 08:20
在VS里执行要按任意键退出,直接双击编译后的程序执行不会有这个提示,运行后自动退出。 ...

谢谢了。因为编译是网上下的代码,您说过之后,我才发现是因为这个代码的最后加了个子程序,专门就是停在那儿,需要按下任意键,才会退出。谢谢您的回答。

还有个问题,不知道您了不了解。我用VS+Intel oneAPI  编译的exe。第1次编译完之后,放在其它电脑上运行时,提示需要某一个.dll文件。后来我注释掉其中某些代码,又编译了一次,这次放在其它电脑上运行时,反而需要更多的.dll文件,感觉有点难以理解。不知您觉得是什么原因呢?我注意掉的是其中一个很简单的子程序

1801

帖子

13

主题

5

精华

论坛跑堂

臭石头雪球

F 币
678 元
贡献
268 点

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

发表于 2022-10-27 15:18:59 | 显示全部楼层
静待花开 发表于 2022-10-27 09:38
谢谢了。因为编译是网上下的代码,您说过之后,我才发现是因为这个代码的最后加了个子程序,专门就是停在 ...

详解
http://dlllose.w.fcode.cn/

202

帖子

2

主题

0

精华

宗师

F 币
1504 元
贡献
781 点

规矩勋章

发表于 2022-10-28 08:30:49 | 显示全部楼层
如果确实需要输入,可以用输入重定向:a.exe < stdin.txt
把要输入的参数写到文件stdin中,一行一个。最好写个批处理。
dll问题看楼上。

24

帖子

8

主题

0

精华

入门

F 币
99 元
贡献
54 点
 楼主| 发表于 2022-11-2 17:09:40 | 显示全部楼层
fcode 发表于 2022-10-27 15:18
详解
http://dlllose.w.fcode.cn/

非常感谢。我按照上面方面,发现这种方法可以减少一些.dll,我编译的这个还需要1个.dll。谢谢了

24

帖子

8

主题

0

精华

入门

F 币
99 元
贡献
54 点
 楼主| 发表于 2022-11-2 17:10:20 | 显示全部楼层
necrohan 发表于 2022-10-28 08:30
如果确实需要输入,可以用输入重定向:a.exe < stdin.txt
把要输入的参数写到文件stdin中,一行一个。最好 ...

谢谢了,高手!

1801

帖子

13

主题

5

精华

论坛跑堂

臭石头雪球

F 币
678 元
贡献
268 点

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

发表于 2022-11-2 21:23:15 | 显示全部楼层
静待花开 发表于 2022-11-2 17:09
非常感谢。我按照上面方面,发现这种方法可以减少一些.dll,我编译的这个还需要1个.dll。谢谢了 ...

具体是哪个?说出来,可能也能解决

24

帖子

8

主题

0

精华

入门

F 币
99 元
贡献
54 点
 楼主| 发表于 2022-11-10 09:49:09 | 显示全部楼层
fcode 发表于 2022-11-2 21:23
具体是哪个?说出来,可能也能解决

是因为程序涉及openmp计算,按照上面的方法设置后,还会差libiomp5md.dll 。不过,这也不是啥问题,我把这个dll与exe一起拷贝就可以了。按上面方法已经差不多了。难道这最后一个也可以不copy?谢谢了

42

帖子

0

主题

0

精华

实习版主

F 币
607 元
贡献
193 点

元老勋章新人勋章

QQ
发表于 2022-11-10 10:55:44 | 显示全部楼层
静待花开 发表于 2022-11-10 09:49
是因为程序涉及openmp计算,按照上面的方法设置后,还会差libiomp5md.dll 。不过,这也不是啥问题,我把 ...

intel fortran 从 13.0 开始移除了静态链接版本的 OpenMP 支持,只提供动态链接版本。

也就是只提供 libiomp5md 而不提供 libiomp5mt。

有几个方法解决:
1. 把 libiomp5md.dll 同时拷贝到客户机。
2. 通过创建自解压缩存档(包括dll)来解决这个问题
3. 使用 Enigma Virtual Box 把 exe 和 libiomp5md.dll 打包到一起。
4. 把 libiomp5md.dll 包含在资源里,然后运行前释放到临时目录。用 LoadLibrary 或 LoadLibraryEx 加载。
5. 使用 MemoryModule 直接在内存里加载模块。(https://github.com/fancycode/MemoryModule)
您需要登录后才可以回帖 登录 | 极速注册

本版积分规则

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

GMT+8, 2022-12-9 04:08

Powered by Tencent X3.4

© 2013-2022 Tencent

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