在另一个库(SDL和Eclipse)之上构建一个新库

Building a new library on top of another library (SDL and Eclipse)

本文关键字:构建 一个 新库 SDL 另一个 Eclipse      更新时间:2023-10-16

我正在使用SDL进行一个项目。我觉得我的很多代码可以/应该用于我可能想承担的任何其他项目

我本来打算开始一个库项目,但我不知道如何链接到SDL库。

通常,我会转到"项目设置"并编辑Mingw32链接器以包含库(ming32、SDLmain和SDL)。但是链接器不会显示在设置中。

所以我的问题是:

是否因为构建库只是一个编译操作而没有链接器设置?

总的来说,有可能在现有图书馆的基础上建立一个图书馆吗?也就是说,使用SDL函数和stuts编写我的库。还是我必须获得源代码并在包含代码的情况下完全重建?

此外,在这种情况下,关于共享与静态的建议?

(还有,关于在哪里学习更多编译器和链接器等的任何建议。我在学校里学习了数据结构,但没有更多)

作为介绍,您必须很好地区分静态库和动态库,它们是完全不同的野兽。。。对你的问题说:

是否因为构建库只是一个编译操作而没有链接器设置?

在这种情况下,我猜您正在创建一个静态库。静态库只是组成源树的所有单个对象文件(即编译器生成的.o文件)在一个对象文件中的集合。不多不少。

对于静态库,您不需要指定哪些是依赖项,因为可以理解,只有在编译最终可执行文件时,您的库才会与它所依赖的所有其他库链接。因此,只有在那个时候(最终可执行版本),才会检测到任何丢失的符号,并且所有其他库都必须可用。

共享库(也称为动态库)是一个可执行文件,它嵌入了它所依赖的所有静态库。它还可以与其他共享库具有外部依赖关系,而这些库不会被嵌入。

总的来说,有可能在现有图书馆的基础上建立一个图书馆吗?也就是说,使用SDL函数和stuts编写我的库。还是我必须获得源代码并在包含代码的情况下完全重建?

无论是对于静态库还是动态库,这都是完全可能的。

此外,在这种情况下,关于共享与静态的建议?

在这种情况下,建议是不可能的,因为您没有指定足够的信息。看看这个:什么时候使用动态库与静态库,以及这个,要有一个指导方针。

(还有,关于在哪里学习更多关于编译器和链接器等的建议。我在学校里学习了数据结构,但没有更多)

我认为上面的两个链接给了你很多信息。如果你想进一步了解细节,你可以从这篇维基百科文章开始,然后从那里浏览。

您正在构建的库可能具有外部依赖关系。这意味着您可以将它与SDL或任何其他您喜欢的外部库链接。

我想这个页面解释了你所有的其他问题:在MingW 中创建DLL