如何包装C++;使用DLL和库 我想知道如何“打包”一个C++项目发布。它使用各种库,我不希望用户必须经历与我相同的设置,将正确的文件放在正确的位置等等。我很难研究这个问题,因为我不确定这个问题的技术术语。如果我在Linux上使用命令行编译,有没有一种简单的方法可以做到这一点?
你是说安装程序?如何包装C++;使用DLL和库 我想知道如何“打包”一个C++项目发布。它使用各种库,我不希望用户必须经历与我相同的设置,将正确的文件放在正确的位置等等。我很难研究这个问题,因为我不确定这个问题的技术术语。如果我在Linux上使用命令行编译,有没有一种简单的方法可以做到这一点?,c++,release,C++,Release,你是说安装程序? 在Windows上,您运行的安装新应用的程序会将所有内容显示在正确的目录中,创建“开始”菜单并允许您取消安装 Visual Studio中有一个安装程序生成器(可能不在free express版本中),用于生成.msi安装程序文件。它很容易用于简单的任务,但做更多的事情会变得复杂 或者,为了创建传统的setup.exe类型安装,我使用优秀的免费 在linux上,您通常会使用发行版使用的任何格式(.deb/.rpm)创建一个包。关于每个操作系统的详细信息,有很多说明,并且用于执行
在Windows上,您运行的安装新应用的程序会将所有内容显示在正确的目录中,创建“开始”菜单并允许您取消安装 Visual Studio中有一个安装程序生成器(可能不在free express版本中),用于生成.msi安装程序文件。它很容易用于简单的任务,但做更多的事情会变得复杂 或者,为了创建传统的setup.exe类型安装,我使用优秀的免费
在linux上,您通常会使用发行版使用的任何格式(.deb/.rpm)创建一个包。关于每个操作系统的详细信息,有很多说明,并且用于执行此操作的工具可能已经安装在您的Linux系统中在Windows和Linux上,您的方法将有所不同,因为每个操作系统都以不同的方式处理此操作。我对Linux比较熟悉,所以我的答案仅限于Linux方面 当您使用-l标志将可执行文件链接到库时,链接器默认在正常的系统库目录中查找,因此这里有四种方法
g++-rpath./-l SomeLib-o MyApp MyApp.cpp
g++-static-l SomeLib-o MyApp MyApp.cpp
告诉gcc静态链接在windows上,我建议wix创建.msi安装程序 我想指出,.dll的查找路径我建议将所有.dll放在与.exe相同的文件夹中,因为这具有最高优先级 但是,vc crt(c/c++运行时库)应该使用microsoft->Update自动提供的重新分发包进行安装
Wix可以将重新分发包包含到同一个.msi中,因此您只需部署一个安装程序文件。您正在linux上编译DLL?对不起,我很愚蠢,我现在正在linux和Windows上进行开发,我必须在这两个平台上对我的库进行大量安装;我是个新手,可能把两者混在一起了。我必须在库中链接,这是我在Windows上用DLL做的(至少我认为这就是那里发生的事情)。我编辑这个问题只是为了说库,因为我不知道事物之间的技术区别。库有两种版本:静态和动态。静态库直接链接到可执行文件,因此您不必担心将它们放在任何地方(代码是可执行文件的一部分)。对于动态库,您需要确保运行时能够找到它们:您需要将它们放置在公共路径中,或者为库设置搜索路径以包含它们所在的目录。阅读这些内容了解更多信息。为什么不静态链接所有内容?@vidit我想包括静态链接是个好主意。我编辑我的帖子。谢谢你提醒我。静态链接并不总是有效的,例如,当你使用GPL libs但不想在GPL下授权你的程序时。