构建不依赖于 MSVCR120.DLL 的自定义英特尔 MKL DLL

Build custom Intel MKL DLL which doesn't depend on MSVCR120.DLL

我正在使用以下命令构建 custom Intel MKL DLL (2019 Update 2)

nmake libintel64 MKLROOT="C:\Program Files (x86)\IntelSWTools\compilers_and_libraries\windows\mkl" name=win\intel64\custom_mkl interface="lp64"

使用 dumpbin 我可以看到 custom_mkl.dll 取决于 MSVCR120.DLLlibiomp5md.dll。第二个 dll 似乎没问题,必须 redistributed as well.

是否可以构建不依赖于 MSVCR120.DLL 的自定义英特尔 MKL DLL?

我看到有一个 crt = <c run-time library> 参数,但我不知道这是否有帮助。

我不能在上面的命令中直接使用 /MT 选项。

我可以使用以下命令和附加参数 crt=libcmt.lib:

构建不依赖于 MSVCR120.DLL 的自定义英特尔 MKL DLL
nmake libintel64 MKLROOT="C:\Program Files (x86)\IntelSWTools\compilers_and_libraries\windows\mkl" name=win\intel64\custom_mkl interface="lp64" crt=libcmt.lib

以下回答对我有帮助:

There are 4 versions of the CRT link libraries present in vc\lib:

  • libcmt.lib: static CRT link library for a release build (/MT)
  • libcmtd.lib: static CRT link library for a debug build (/MTd)
  • msvcrt.lib: import library for the release DLL version of the CRT (/MD)
  • msvcrtd.lib: import library for the debug DLL version of the CRT (/MDd)