3

我正在使用 SFML,并且正在 Code::Blocks 和 mingw32 中构建应用程序。我已将 SFML 库 (sfml-whatever.a) 添加到我的项目中,并且运行良好。

但是 iIrc,静态库被“编译”成可执行文件。如果是这样,那么为什么我必须将所有 SFML DLL 放在可执行文件旁边,以便它在 Code::Blocks 之外的任何地方运行?如果我要以某种方式将 DLL 从 Code::Blocks 中“动态链接”到我的项目,(我不知道该怎么做),我是否仍然需要为我的可执行文件提供所有 .a 文件正常运行?

在此先感谢,我对静态或动态库不太熟悉。如果有什么不同,我正在使用 Ubuntu linux,并且我正在使用 mingw32 进行交叉编译。

4

2 回答 2

6

使用 SFML,您可以静态链接到他们在上面评论中提到的库。这样它就全部编译到可执行文件中,您不需要将它与 DLL 一起提供。如何完成取决于您使用的是 SFML 1.6 还是 2.0。

1.6 不需要任何预处理器定义,但 2.0 要求您使用 cmake 为编译器构建解决方案/makefile,然后SFML_STATIC在预处理器定义中使用 #define。

于 2011-09-04T07:24:44.023 回答
2

在这种情况下,静态库只包含与动态库接口的代码,而不是实际的库代码。

于 2011-05-18T23:16:46.080 回答