在没有任何Fortran支持的情况下在另一个系统中运行EXE,额外的DLL支持& Microsoft Visual Studio

时间:2018-03-05 08:43:30

标签: visual-studio-2015 ide fortran intel-fortran

假设我创建了一个简单的程序来添加两个数字。当我使用命令行进行编译时,使用以下命令创建对象(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。

3 个答案:

答案 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。使用静态而不是动态库解决了我的问题,这与您的类似。