我正在尝试将我的VS2012 / MKL代码分发到另一台计算机上。在那台计算机上,我找不到vcomp.dll。据我所知,通过使用vcomp.dll,应用程序使用MS OpenMP而不是libiomp。
我试图解决这种对MS OpenMP的依赖并在论坛中搜索我做了以下更改:
每次更改仍会加载vcomp110.dll:尝试在测试计算机上运行时出错,并且dev计算机上的加载输出列出了vcomp110.dll。我是否缺少额外的步骤来强迫VS使用libiomp而不是vcomp?
我无法提供可重现的代码来附加。
由于
答案 0 :(得分:5)
使用Visual Studio *中的英特尔OpenMP *库
使用运行Windows操作系统的系统时,您可以进行某些更改 在Visual C ++ Visual Studio 2005开发环境中允许 您可以使用英特尔C ++编译器和Visual C ++来创建 使用英特尔OpenMP库的应用程序。
注:
Microsoft Visual C ++必须具有符号_OPENMP_NOFORCE_MANIFEST 已定义或将包含vcomp90 dll的清单。而 这可能不会导致构建系统出现问题,它会 将应用程序移动到另一个系统时导致问题 没有安装此DLL。
设置项目属性页以指示英特尔OpenMP运行时 图书馆位置:
Open the project's property pages in from the main menu: Project > Properties (or right click the Project name and select Properties) . Select Configuration Properties > Linker > General > Additional Library Directories Enter the path to the Intel compiler libraries. For example, for an IA-32 architecture system, enter: <Intel_compiler_installation_path>\IA32\LIB
在运行时访问英特尔OpenMP动态运行时库; 您必须指定相应的路径:
Open the project's property pages in from the main menu: Project > Properties (or right click the Project name and select Properties). Select Configuration Properties > Debugging > Environment Enter the path to the Intel compiler libraries. For example, for an IA-32 architecture system, enter:
PATH =%PATH%; \ IA32 \滨
将Intel OpenMP运行时库名称添加到链接器选项和 排除默认的Microsoft OpenMP运行时库:
Open the project's property pages in from the main menu: Project > Properties (or right click the Project name and select Properties). Select Configuration Properties > Linker > Command Line > Additional Options Enter the OpenMP library name and the Visual C++ linker option, /nodefaultlib.
我猜测你缺少的东西是需要定义_OPENMP_NOFORCE_MANIFEST。