如何使用dll和库打包C ++

时间:2012-06-08 15:54:51

标签: c++ release

我想知道如何“打包”一个C ++项目以供发布。它使用各种库,我不希望用户必须通过我所做的相同设置,将正确的文件放在正确的位置等。我很难研究这个,因为我不确定这个问题的技术术语。如果我在Linux上使用命令行编译,有没有一种简单的方法可以做到这一点?

3 个答案:

答案 0 :(得分:4)

您的方法在Windows和Linux上会有所不同,因为每个操作系统都以不同的方式处理此问题。我对Linux更熟悉,所以我将我的答案限制在Linux方面。

使用-l标志将可执行文件与库链接时,链接器默认查找正常的系统库目录,因此这里有四种方法。

  1. 要求用户自己正确安装库。但是,听起来你不想这样做。

  2. 让用户将库位置添加到LD_LIBRARY_PATH变量。

  3. 您的第三个选项是强制链接器使用-rpath标志查看库的特定路径。例如,要让应用程序在其工作目录中查找共享库,您可以使用以下代码进行编译:{{1​​}}

  4. 另一个选择是将代码与其库静态链接,这样您只需分发一个可执行文件。如果存在静态库,您可以使用g++ -rpath ./ -l SomeLib -o MyApp myapp.cpp告诉gcc静态链接。

答案 1 :(得分:2)

在Windows上,我建议使用wix http://wix.sourceforge.net/来创建.msi安装程序 我想指出,.dll的查找路径我建议将所有.dll放在与.exe相同的文件夹中,因为它具有最高优先级

但是,应使用microsoft的重新分发软件包安装vc crt(c / c ++运行时库) - >自动更新http://www.microsoft.com/de-de/download/details.aspx?id=5555

Wix可以将重新分发程序包包含在同一个.msi中,因此您只需要部署一个安装程序文件。

答案 2 :(得分:1)

你的意思是安装人员?
在Windows上运行以安装新应用程序的程序,该应用程序将所有内容排除在正确的目录中,创建开始菜单并允许您取消安装它?

Visual Studio中有一个安装程序构建器(可能不是免费的快速版本),它构建了.msi安装程序文件。它对于简单的任务来说相当容易使用,但是做更多的事情变得很复杂。

或者,要创建传统的setup.exe类型安装,我使用优秀的免费Innosetup

在Linux上,您通常会使用您的发行版使用的任何格式(.deb / .rpm)创建一个包。有很多关于每个细节的说明,这样做的工具可能已经安装在你的Linux系统中