VS2012 + MKL的应用程序分发

Sra*_*vyn 2 c++ dll intel-mkl visual-studio-2012

我正在尝试将我的VS2012/MKL代码分发到一台单独的计算机上.在那台计算机上,我找不到vcomp.dll.据我所知,通过使用vcomp.dll,应用程序使用MS OpenMP而不是libiomp.

我试图绕过这种对MS OpenMP的依赖并在论坛中搜索我做了以下更改:

  • 将\ compiler\lib\intel64目录添加到"VC++目录" - >引用目录和库目录
  • 将libiomp5md.lib添加到Linker-> Additional Dependencies
  • 将vcomp.lib添加到链接器 - >忽略特定的默认库
  • 将\ compiler\lib\intel64添加到我的链接器 - >其他库目录以获得良好的衡量标准.

每次更改仍会加载vcomp110.dll:尝试在测试计算机上运行时出错,并且dev计算机上的加载输出列出了vcomp110.dll.我是否缺少额外的步骤来强迫VS使用libiomp而不是vcomp?

我无法提供可重现的代码来附加.

谢谢

小智 5

从设在这里Intel的文档:http://software.intel.com/sites/products/documentation/studio/composer/en-us/2011Update/compiler_c/optaps/common/optaps_par_compat_libs_using.htm

使用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
Run Code Online (Sandbox Code Playgroud)

在运行时访问英特尔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:
Run Code Online (Sandbox Code Playgroud)

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.
Run Code Online (Sandbox Code Playgroud)

我猜你缺少的是需要定义_OPENMP_NOFORCE_MANIFEST.