VS2012 + MKL的应用程序分发

时间:2014-03-28 13:56:27

标签: c++ visual-studio-2012 dll intel-mkl

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

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

  • 将\ compiler \ lib \ intel64目录添加到" VC ++目录" - >参考目录和库目录
  • 将libiomp5md.lib添加到Linker->附加依赖项
  • 将vcomp.lib添加到Linker->忽略特定默认库
  • 将\ compiler \ lib \ intel64添加到我的链接器 - >附加库目录中以获得良好的衡量标准。

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

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

由于

1 个答案:

答案 0 :(得分:5)

来自此处的英特尔文档: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
     

在运行时访问英特尔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。