【问题标题】:wxWidgets: Which files to link?wxWidgets:链接哪些文件?
【发布时间】:2015-02-16 13:00:55
【问题描述】:

我正在学习 C++,为此,我正在编写一个示例 wxWidgets 应用程序。

但是,我在 wxWidgets 网站上找不到的任何文档都告诉我要传递给链接器的库名称。

现在,除了 wxWidgets 之外,对于任何库,是否有一般经验法则或其他约定我应该/会知道,我要链接的对象文件的名称是什么?

【问题讨论】:

    标签: c++ wxwidgets


    【解决方案1】:

    我们有更多的“无名指规则”,而不是拇指

    通常,如果您手动编译库,它将生成几个库文件(通常是 .a .lib 或类似的东西,完全取决于您的编译器和您的 ./configure)这些是(通常)因为makefile 的构建脚本。

    现在可以按照开发人员喜欢的任何方式编辑生成文件,但是有一些很好的约定(实际上是a standard),并且有一些工具可以自动生成库的生成文件(见automake)

    Makefile通常是一致的

    您可以简单地使用 makefile 来生成文件,如果它符合要求,这些文件将被放置在一个特定的文件夹中(我相信是 lib 文件夹?),所有这些都已排队等待使用!

    请记住,库文件只是以预编译格式实现您的代码,您可以使用ar 工具轻松地从您的代码中自己创建一个库。因为它是代码,就像任何其他代码一样,您不一定要包含给定库的所有 库文件。例如,如果您不使用富文本,则使用 wxWidgets,您当然不想通过包含该库文件来浪费最终可执行文件中的额外空间。以后想用的话,可以添加到你的项目中(就像添加.cpp文件一样)

    哦,还有 wxWidgets,在他们的(很棒的)documentationeach module 中会说明您需要包含什么标头,以及它是哪个库的一部分。

    幸福

    图书馆是令人惊叹的、神奇的、幸福的独角兽。尽量不要对它们感到太沮丧,它们会在你的余下编程生涯中在你的想象领域腾飞!

    【讨论】:

    • 谢谢,还有一件事:如果您要链接动态库,链接器是否会在运行时确定哪些是实际需要的,或者您是否必须将它们限制在防止过多内存所需的范围内在您的应用程序运行时使用?
    • 好问题!有一个wiki article 肯定会提供信息。简短的回答,不用担心包含太多 DLL!
    • 减号 1。没有帮助我,并且文档引用了 wxcore,它不是生成的库文件之一。
    【解决方案2】:

    在谷歌搜索之后,我在 wxWidgets wiki 上找到了一个与 Code::Blocks IDE 相关的页面,但它也适用于我。通过将以下内容添加到链接器选项,它会选择所有必要的文件进行链接:

    `wx-config --libs`
    

    (所以这并不能解决我的“一般规则”问题;对于我正在使用的任何库,我仍然需要找出要链接的文件,但至少这解决了 wxWidgets 的问题)。

    【讨论】:

    • 我没有一般的经验法则。当您使用 3rd 方库(从源代码构建或预编译)时,您会得到一些 .lib 或 .dll 文件。从这些你可以开始链接到核心模块,添加东西直到你成功地构建你的项目。我认为在你启动并运行之前,一些试验和错误和谷歌搜索是不可避免的。我也觉得这个过程很痛苦。
    【解决方案3】:

    每个平台的构建说明都不同,因此您需要参考特定于平台的文件,例如docs/gtk/install.txt(其中提到了wx-config)或docs/msw/install.txt 才能找到它们。

    FWIW wxWidgets 项目也将非常感激地接受主要手册的任何补丁,以改进文档的组织。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-10-22
      • 2011-01-23
      • 2018-03-25
      • 2010-10-25
      • 2014-07-18
      • 1970-01-01
      • 2012-10-04
      • 1970-01-01
      相关资源
      最近更新 更多