Fortran Coder

标题: 什么代码可以关闭运行窗口,不用一直停在press any key to con... [打印本页]

作者: 静待花开    时间: 2022-10-26 21:49
标题: 什么代码可以关闭运行窗口,不用一直停在press any key to con...
能不能在程序的最后加一些代码,使程序运行结束后,屏幕不是一直停在press any key to continue,而是由执行这些代码来关闭这个窗口,不需要手动去关闭?
有没有参考资料,高手可否提示一下?

作者: necrohan    时间: 2022-10-27 08:20
在VS里执行要按任意键退出,直接双击编译后的程序执行不会有这个提示,运行后自动退出。
作者: 静待花开    时间: 2022-10-27 09:38
necrohan 发表于 2022-10-27 08:20
在VS里执行要按任意键退出,直接双击编译后的程序执行不会有这个提示,运行后自动退出。 ...

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

还有个问题,不知道您了不了解。我用VS+Intel oneAPI  编译的exe。第1次编译完之后,放在其它电脑上运行时,提示需要某一个.dll文件。后来我注释掉其中某些代码,又编译了一次,这次放在其它电脑上运行时,反而需要更多的.dll文件,感觉有点难以理解。不知您觉得是什么原因呢?我注意掉的是其中一个很简单的子程序
作者: fcode    时间: 2022-10-27 15:18
静待花开 发表于 2022-10-27 09:38
谢谢了。因为编译是网上下的代码,您说过之后,我才发现是因为这个代码的最后加了个子程序,专门就是停在 ...

详解
http://dlllose.w.fcode.cn/
作者: necrohan    时间: 2022-10-28 08:30
如果确实需要输入,可以用输入重定向:a.exe < stdin.txt
把要输入的参数写到文件stdin中,一行一个。最好写个批处理。
dll问题看楼上。
作者: 静待花开    时间: 2022-11-2 17:09
fcode 发表于 2022-10-27 15:18
详解
http://dlllose.w.fcode.cn/

非常感谢。我按照上面方面,发现这种方法可以减少一些.dll,我编译的这个还需要1个.dll。谢谢了
作者: 静待花开    时间: 2022-11-2 17:10
necrohan 发表于 2022-10-28 08:30
如果确实需要输入,可以用输入重定向:a.exe < stdin.txt
把要输入的参数写到文件stdin中,一行一个。最好 ...

谢谢了,高手!
作者: fcode    时间: 2022-11-2 21:23
静待花开 发表于 2022-11-2 17:09
非常感谢。我按照上面方面,发现这种方法可以减少一些.dll,我编译的这个还需要1个.dll。谢谢了 ...

具体是哪个?说出来,可能也能解决
作者: 静待花开    时间: 2022-11-10 09:49
fcode 发表于 2022-11-2 21:23
具体是哪个?说出来,可能也能解决

是因为程序涉及openmp计算,按照上面的方法设置后,还会差libiomp5md.dll 。不过,这也不是啥问题,我把这个dll与exe一起拷贝就可以了。按上面方法已经差不多了。难道这最后一个也可以不copy?谢谢了
作者: 布衣龙共    时间: 2022-11-10 10:55
静待花开 发表于 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)
作者: 静待花开    时间: 2022-11-10 14:33
布衣龙共 发表于 2022-11-10 10:55
intel fortran 从 13.0 开始移除了静态链接版本的 OpenMP 支持,只提供动态链接版本。

也就是只提供 lib ...

佩服,佩服,佩服!非常感谢。我目前采用的是第1种方法。后面几种方法我试试,真没想到有这么多种方法,版主NB




欢迎光临 Fortran Coder (http://bbs.fcode.cn/) Powered by Discuz! X3.2