假设我创建了一个简单的程序来添加两个数字。当我使用命令行进行编译时,使用以下命令创建对象(obj),链接和创建exe:
ifort add.f90
ifort -o add add.obj
此方法创建的exe将在任何其他系统(运行Windows)中运行,而不管Fortran,Visual Studio,其中的额外DLL的支持。
当我使用Visual Studio编译,构建甚至发布时,我在一些
中找到了这个方法创建的exe文件C:\Users\VIVEK\Documents\Visual Studio 2013\Projects\Console1\Debug or
C:\Users\VIVEK\Documents\Visual Studio 2013\Projects\Console1\Release
目录无法在任何系统上独立运行(就像在命令行情况下一样)。另一个系统报告有关DLL的一些错误。
我想创建独立的'来自Visual Studio的exe就像命令行一样。我在不同的论坛和整个网络上搜索了很多,但没有找到可以帮助我的确切步骤。我知道一些dll链接或缺少某些内容,例如依赖项。我只是Visual Studio及其设置的初学者。有人可以通过详细的逐步程序帮助我吗?
我还注意到两个exe的大小不同。例如,命令行创建的exe将大致接近100-120 KB(我认为这是它独立性的原因)。但是,使用Visual Studio创建的exe大约为20-30 KB。
答案 0 :(得分:0)
你想要的是运行时。您可以使用该主题在互联网上搜索更多内容。 例如,如果你在Windows上,那么这可能会有所帮助: https://software.intel.com/en-us/articles/redistributable-libraries-of-the-intel-c-and-fortran-compiler-for-windows/ 但如果你使用VS版本,那么你应该检查出来。
答案 1 :(得分:0)
Visual Studio可能默认为动态链接到英特尔运行时库。我相信你可以通过在项目的编译阶段给ifort
/libs:static
选项强制VS静态链接你的应用程序(不需要DLL)。您可能还需要使用/threads
选项。
对Windows ifort
或Windows上的链接过程有更深入理解的人可能能够解释为什么/threads
是必要的;我所知道的是,尽管应用程序是单线程的,但我为Windows运行的最后一个Fortran代码的构建文档使用了/libs:static
和/threads
。
答案 2 :(得分:0)
根据@arclight,参考我的话题here。使用静态而不是动态库解决了我的问题,这与您的类似。