我们正在将VC ++项目从Visual Studio 2003移植到Visual Studio 2008 SP1(9.0.30729.4148)。依赖的外部库也是 使用Visual Studio 2008 SP1编译。
MainApp - Main application Compiled with VS SP1 9.0.30729.4148
ExtStaticLib1 - External static library compiled with VS SP1 9.0.30729.4148
ExtDynamicDll1 - External DLL compiled with VS SP1 9.0.30729.4148
主应用程序有两种部署方案:
我们正在做以下事情来解决这个问题:
使用宏_BIND_TO_CURRENT_OPENMP_VERSION编译MainApp目标(适用于MainApp中的所有项目)。
将VS2008SP1可再发行DLL分发为私有程序集,并将它们复制到应用程序安装目录中。
问题:
感谢。
答案 0 :(得分:2)
我会避免使用任何BIND宏。你会早点遇到麻烦。
即使您将VC运行时dll作为私有程序集分发,也无法确定用户是否已将其安装在其他应用程序中。
出现的一个问题是,您最终会得到一个引用多个c-runtime版本的清单。 Here这是一个公开的问题(仅供参考:我有同样的问题!)。
因此,如果没有理由迫使您只使用非常特定版本的c-runtime而不是最新的兼容版本,那么请不要使用那些定义宏!
答案 1 :(得分:1)
找到此博客资源,它可以回答您的问题。 请参阅“更新,补丁和服务包”部分 http://helgeklein.com/blog/2010/03/deploying-visual-c-runtime-files-as-private-assemblies/