wxWidgets:应链接哪些文件?

3

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

但是,在wxWidgets网站上找到的所有文档都没有告诉我应该向链接器传递什么库名称。

除了wxWidgets之外,是否有一般的经验法则或其他约定,让我知道任何库的目标文件名称是什么,以便进行链接?

3个回答

1

经过更多的谷歌搜索,我在wxWidgets维基上找到了一篇与Code::Blocks IDE相关的页面,但对我也有效。通过将以下内容添加到链接器选项中,它可以获取所有必要的文件以进行链接:

`wx-config --libs`
< p >(所以这并没有解决我的“通用规则”问题;对于我正在使用的任何库,我仍然必须找出要链接哪些文件,但至少这解决了wxWidgets的问题)。< /p >

2
我没有一个通用的经验法则。当你使用第三方库(无论是从源代码构建还是预编译)时,你会得到一些.lib或.dll文件。从这些文件开始,你可以链接到核心模块,并逐步添加其他内容,直到你的项目成功构建。我认为在将事情运行起来之前,一些试错和搜索是不可避免的。我也觉得这个过程相当痛苦。 - undefined

1
构建说明对于每个平台都不同,因此您需要参考特定于平台的文件,例如docs/gtk/install.txt(其中提到wx-config)或docs/msw/install.txt来查找它们。
顺便提一下,wxWidgets项目肯定会感激任何改进文档组织的主要手册的补丁。

1

我们更多地遵循“无名指规则”,而不是拇指规则

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

现在,可以以任何开发者想要的方式编辑makefile,但有一些好的惯例(事实上有一个标准),许多人都会遵循,并且有工具可自动生成库的makefile(请参见automake

Makefiles通常是一致的

您可以简单地使用makefile来生成文件,如果符合规范,则文件将被放置在特定文件夹中(我认为是lib文件夹?),所有文件都排队等待使用!

请记住,库文件只是您的代码的预编译格式实现,您可以使用ar工具轻松地从您的代码创建一个库。因为它是代码,就像任何其他代码一样,您不一定想要包含给定库的所有库文件。例如,在使用wxWidgets时,如果您不使用富文本,则肯定不希望通过包含该库文件来浪费最终可执行文件中的额外空间。稍后,如果您想使用它,可以将其添加到您的项目中(就像添加.cpp文件一样)。
哦,还有对于wxWidgets,在他们(很棒的)文档中,每个模块都会说明您需要包含什么头文件以及它属于哪个库。 快乐 库是快乐的神奇、独角兽。只要不要对它们过于沮丧,它们就会在您的编程生涯中跳跃于您的想象之中!

谢谢,还有一件事:如果你在链接动态库,链接器会在运行时找出哪些库实际上是需要的,还是你必须限制它们以防止应用程序运行时使用过多的内存? - undefined
好问题!有一篇维基百科文章会给你提供很多信息。简单来说,不用担心包含太多的动态链接库(DLL)! - undefined
减1。对我没有帮助,而且文档中提到的wxcore并不是生成的库文件之一。 - undefined

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接