OpenMP vcomp.dll problem

原文

All VC Libs DLLs require manifests to load them. Manifest should be generated and embedded in the binary when the project is built in the IDE.

For OpenMP the manifest is generated when omp.h is included. There are cases where a dependency on vcomp.dll can be pulled in without using the header. In these cases the manifest may not be generated.

To generate the manifest, include omp.h and built your project. IDE built projects will automatically embed the manifest in the binary (unless the project settings were changed to disable it) 

If you are building from the command line then you can use the following to embed the manifest in the binary.

For EXEs
mt.exe -outputresource:<binary name>;1 -manifest <bianry name>.manifest

For DLLs
mt.exe -outputresource:<binary name>;2 -manifest <bianry name>.manifest

Following is a sample makefile with the changes to automatically embed the manifest in the binary.

...
MT_EXE=if exist  $@.manifest  mt.exe -outputresource:$@;1 -manifest $@.manifest  $(ADDITIONAL_MANIFESTS)
 
MT_DLL=if exist  $@.manifest  mt.exe -outputresource:$@;2 -manifest $@.manifest  $(ADDITIONAL_MANIFESTS)
 
#-manifest can be followed by any number of valid manifest files. mt.exe will merge them and if the merge does not result in any errors the resulting manifest is embedded.
 
all : b.dll a.exe
 
a.exe : a.obj
    link $(LINKER_FLAGS) $** /out:$@
    $(MT_EXE)
 
a.obj : a.cpp
    cl /MD a.cpp /c
 
b.dll : b.cpp
    cl /MD b.cpp /LD
    $(MT_DLL)

Once you have the manifest for your app you can deploy vcomp.dll 
1. Shared location (%SYSTEMROOT%\WinSXS)
a. Using vcredist.exe - Installs all the VC DLLs
b. By merging the OMP MSM into your setup
2. Applocal install
Copy the OpenMP directory under VC\redist\<platform> as a subdirectory of the app directory.

http://msdn2.microsoft.com/zebw5zk9(en-US,VS.80).aspx has the deployment details.

Sridhar Madhugiri
Software Engineer
Visual C++

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值