我在,Visual Studio设置编译的OpenMP的项目与/ MT开关(或等效。为什么intel编译器生成需要libiomp5mt.dll的输出,即使我要求静态链接? “:代码生成:运行时库:C++多线程”
Visual Studio中仍,但是,报告说,我的输出要求libiomp5mt.dll(多线程DLL)时,我还以为上面的设置被要求静态链接。
难道还有其他选择的地方我错过了吗?
或者,如果DLL是一个要求,我相信我允许重新分配英特尔的dll以及我自己的应用程序?
我在,Visual Studio设置编译的OpenMP的项目与/ MT开关(或等效。为什么intel编译器生成需要libiomp5mt.dll的输出,即使我要求静态链接? “:代码生成:运行时库:C++多线程”
Visual Studio中仍,但是,报告说,我的输出要求libiomp5mt.dll(多线程DLL)时,我还以为上面的设置被要求静态链接。
难道还有其他选择的地方我错过了吗?
或者,如果DLL是一个要求,我相信我允许重新分配英特尔的dll以及我自己的应用程序?
英特尔网站上说:
我们强烈建议您在兼容性OpenMP的动态链接*运行时库libiomp(即libiomp5md.lib和libiomp5md.dll,位于[编译DIR] \ lib目录),即使其他库静态链接。不建议链接到静态OpenMP *运行时库(即libiomp5mt.lib)。由于一个应用程序中的多个OpenMP库会导致性能问题(线程太多),并且如果初始化多个副本,可能会导致正确性问题。
因此,尽管您可以配置OpenMP以静态链接,并且此配置与C运行时无关,但建议您不要使用。
据我所知,英特尔的OpenMP许可证允许免版税再分配。您应该检查OpenMP随附的许可证,以确保安全。
以上开关仅适用于C++运行时,OpenMP是不属于C++运行时的外部库。因此,交换机对它没有任何影响。
根据DLL的重新分配,查看DLL所附带的产品的许可证。你可能被允许重新分配它。
有两种创建代码库的方法。作为静态的Libs和Dll(Extentsions:* .lib和* dll)。
如果只有可用的Dll,则只能动态链接到它,而不是静态链接。可能会让你感到困惑的是,一个Dll通常有一个链接到的lib文件,它具有进入Dll的所有入口点。