如何解决LNK4098警告、libcmt.lib与库冲突?以及随后的错误结果

问题描述 投票:0回答:1

我需要生成一个静态 .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 启动静态链接到您的代码中。

如何才能在发布模式下链接而不出现链接警告和执行错误。 谢谢你。

intel-fortran intel-mkl intel-oneapi allocatable-array
1个回答
0
投票

我收到警告“LNK4098:defaultlib 'libcmt.lib'与...冲突” 我刚刚在属性页 Linker\Command Line\Additional Options 下添加了 /NODEFAULTLIB:libcmt.lib。警告消失了,程序开始运行。

最新问题
© www.soinside.com 2019 - 2025. All rights reserved.