C++ 为什么英特尔编译器生成需要libiomp5mt.dll的输出,即使我要求静态链接?
我正在编译一个带有/MT开关的openmp项目(或者在visual studio设置中相当于“C++:代码生成:运行时库:多线程”) 然而,Visual Studio仍然报告说,当我认为上述设置要求静态链接时,我的输出需要libiomp5mt.dll(多线程dll) 有没有别的选择我错过了C++ 为什么英特尔编译器生成需要libiomp5mt.dll的输出,即使我要求静态链接?,c++,openmp,intel,C++,Openmp,Intel,我正在编译一个带有/MT开关的openmp项目(或者在visual studio设置中相当于“C++:代码生成:运行时库:多线程”) 然而,Visual Studio仍然报告说,当我认为上述设置要求静态链接时,我的输出需要libiomp5mt.dll(多线程dll) 有没有别的选择我错过了 可选的,如果DLL是一个要求,我假定我可以在我自己的应用程序中重新分配英特尔的DLL, < P>以上的开关仅用于C++运行时,OpenMP是一个不是C++运行时的一部分的外部库,因此交换机对它没有任何影响。
可选的,如果DLL是一个要求,我假定我可以在我自己的应用程序中重新分配英特尔的DLL,
< P>以上的开关仅用于C++运行时,OpenMP是一个不是C++运行时的一部分的外部库,因此交换机对它没有任何影响。根据DLL的重新分发,查看DLL附带产品的许可证。您可能被允许重新分发它。英特尔网站上说: 强烈建议您动态链接兼容OpenMP*运行时库libiomp(即libiomp5md.lib和libiomp5md.dll,位于[Compiler Dir]\lib目录),即使其他库是静态链接的。链接到静态OpenMP*运行时库(即libiomp5mt.lib)不建议使用。因为一个应用程序中的多个OpenMP库会导致性能问题(线程太多),并且如果初始化了多个副本,则可能会导致正确性问题 因此,尽管您可以将OpenMP配置为静态链接,并且此配置独立于C运行时,但建议您不要这样做
据我所知,英特尔的OpenMP许可证允许免版税重新分发。为了安全起见,您应该检查OpenMP附带的许可证。创建代码库有两种方法。静态库和dll(扩展名:*.lib和*dll) 如果只有一个Dll可用,您只能动态链接到它,而不能静态链接到它。可能会让您感到困惑的是,Dll通常有一个您链接到的lib文件,其中包含Dll的所有入口点