我需要生成一个静态 .exe 来分发给没有 VisualStudio、没有 Intel Fortran/oneAPI 和没有 MKL 的用户。
我的代码“UgensTester.f90”自 2010 年以来一直运行良好,每年都会更新,没有问题,直到我决定用可分配数组替换静态数组,如下所示:
之前。
integer, parameter :: n=8
double precision var(n,3)
现在。
integer n
double precision, allocatable, var(:,:)
read(1,*) n
allocate( var(n,3) )
在 VS 2019 > 项目 > 属性、Fortran oneAPI 2023 > 库中,我选择了生成静态 .exe 和使用 MKL 所需的内容。即,
Runtime Library: Debug Multithreaded (/libs:static /threads /dbglibs)
Intel Math Kernel Library: Sequential (/Qmkl:sequential)
在调试模式下链接,我可以制作一个静态.exe,结果很好,但执行速度很慢。
在发布模式下链接,我收到 LNK4098 警告,libcmt.lib 与其他(?)库(哪些?)冲突。
这只是一个警告,但现在 .exe 使用的是错误的 MKL 例程,我从 MKL 本身收到错误,我的代码捕获这些错误并将其打印到文件中。
我在网上找到了这样的解释: libcmt.lib。将本机 CRT 启动静态链接到您的代码中。
如何才能在发布模式下链接而不出现链接警告和执行错误。 谢谢你。
我收到警告“LNK4098:defaultlib 'libcmt.lib'与...冲突” 我刚刚在属性页 Linker\Command Line\Additional Options 下添加了 /NODEFAULTLIB:libcmt.lib。警告消失了,程序开始运行。