静态和动态库

发布于 2024-11-07 19:25:35 字数 366 浏览 0 评论 0原文

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

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

预先感谢,我对静态或动态库不太熟悉。如果有什么区别的话,我正在 Ubuntu linux 上工作,并且使用 mingw32 进行交叉编译。

I am using SFML, and I am building an application in Code::Blocks and mingw32. I have have added the SFML libraries (sfml-whatever.a) to my project, and it runs nicely.

BUT iIrc, the static libraries get 'compiled' into the executable. If this is so, then why do I have to place all the SFML DLL's next to the executable for it to run anywhere outside of Code::Blocks? And if I were to somehow 'dynamically link' the DLL's from within Code::Blocks to my project, (I don't know how to do that), would I still have to ship my executable with all the .a files for it to run properly?

Thanks in advance, I am not quite familiar with libraries, static or dynamic. If it makes any difference, I am working on Ubuntu linux, and I am using mingw32 for cross-compiling.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

流年里的时光 2024-11-14 19:25:35

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

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

With SFML you can link statically to their libraries as mentioned in the comments above. This way its all compiled into the executable and you won't need to ship it with the DLL's. How this is done depends on whether you are using SFML 1.6 or 2.0.

1.6 doesn't require any preprocessor definitions, but 2.0 requires you to build a solution/makefile using cmake for your compiler and then #define SFML_STATIC in your preprocessor definitions.

恋竹姑娘 2024-11-14 19:25:35

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

In this case, the static libraries simply contain the code that interfaces to the dynamic libraries, it's not the actual library code.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文