【问题标题】:Conditionally add content file to visual studio C++ project有条件地将内容文件添加到 Visual Studio C++ 项目
【发布时间】:2012-12-18 22:43:45
【问题描述】:

我有一个用于 DLL 的可视 C++ 项目和一个安装项目。在安装程序中,我添加了我的项目的内容文件。

有没有办法根据您是在编译调试还是发布来将文件添加为内容文件?如果我在 debug 下编译,我想包含 boost_date_time-vc100-mt-gd-1_51.dll,如果我在 release 下编译,我想包含 boost_date_time-vc100-mt-1_51.dll。

我的附加部门看起来像这样

Shell32.lib;libzmq.lib;log4cxx.lib;boost_date_time-vc100-mt-gd-1_51.lib;...

在其他库目录下,我添加了所有这些 .lib 文件的路径,这些文件还包含它们各自的 .dll 文件

我尝试了以下但没有成功...

  1. 添加了一个自定义构建步骤以在构建之前运行,它将正确的 dll 文件复制到 OutDir 并将此自定义构建步骤的输出设置为 dll 文件。

  2. 通过手动编辑 vcxproj 文件有条件地包含内容文件。如果配置是发布模式,我会将非调试版本设置为部署内容,将调试版本设置为 false,反之亦然。这看起来像这样,

    <ItemGroup Condition="'$(Configuration)'=='Release'">

    <None Include="boost_date_time-vc100-mt-1_51.dll ">

    <DeploymentContent>true</DeploymentContent>....

    </None></ItemGroup

然而,这些都不起作用。无论我如何构建我的项目,第二个选项似乎总是默认为调试模式。

【问题讨论】:

  • 你是用 LIB 链接 DLL,还是使用LoadLibrary
  • 我更新了我的问题。我想这并没有真正缩短库名称。我使用的是标头,但我调用的函数需要 .dll,因此不涉及 lib

标签: visual-studio-2010 visual-studio visual-c++


【解决方案1】:

添加依赖时,可以将其添加到一个配置或所有配置中:

[这张图片是 VS 2012 的,但 2010 和 2008 看起来几乎一样。]

因此,您在左上角选择要修改的配置,然后将库添加到 additional dependencies。请注意,您在此处添加的将是与 DLL 关联的 .lib 文件,而不是 dll 本身(编译器将使可执行文件依赖于 DLL,因为您链接到它的 .lib 文件)。

【讨论】:

  • 试过了。安装项目没有拉入 dll,我的项目也没有将 dll 转储到输出目录。不过还是谢谢。
  • 我收回了。 Debug 正在根据您的建议将所有必需的文件添加到安装项目中。 Release 无法打包 boost dll 的发布版本,但会拾取其他所有内容。出于某种原因,它不会接收到它。
  • @Thatoneguy:如果您选择了“发布”并添加了库,但它没有启动它,那么我已经没有好主意了。
猜你喜欢
  • 2014-06-20
  • 1970-01-01
  • 2013-07-16
  • 2012-12-08
  • 1970-01-01
  • 2011-03-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多