2012-12-18 63 views
0

我有一个DLL的Visual C++项目和它的安装项目。在安装程序中,我添加了项目的内容文件。有条件地将内容文件添加到Visual Studio C++项目

有没有一种方法可以将文件添加为内容文件,具体取决于您是在编译调试还是发布?我想包括boost_date_time-vc100-mt-gd-1_51.dll,如果我在调试版和boost_date_time-vc100-mt-1_51.dll下编译,如果我在版本下编译。

我额外DEPS看起来像这样

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

在附加库目录我已经添加的路径,所有这些.lib文件还包含各自的.dll文件

我已经尝试以下没有成功...

  1. 添加一个自定义生成步骤运行之前生成,复制c或将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

这些都没有成功。无论我如何构建项目,第二个选项总是默认为调试模式。

+0

您是否将DLL与LIB链接起来,还是使用'LoadLibrary'? – paddy

+0

我更新了我的问题。我想这不是真的缩短了lib名称。即时通讯使用标题,但函数im调用需要.dll,所以没有涉及到的图形 – bgura

回答

1

当您添加的依赖,你可以把它添加到一个配置或全部配置:

enter image description here

[这张图片是VS 2012年,但2010年和2008年的外观几乎相同]

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

+0

试过了。安装项目并没有拉动dll,我的项目也没有将dll转储到输出目录。不过谢谢。 – bgura

+0

我回来了。调试将所有必需的文件添加到您的建议的安装项目。发行版虽然没有收录boost dll的发布版本,但会收拾其他所有内容。由于某种原因,它不会选择那个。 – bgura

+0

@Thatoneguy:如果您选择了“发布”并添加了该库,但它没有采用它,我完全没有好的想法。 –

相关问题