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

问题描述 投票:0回答:2

我正在与 SDL 合作开展一个项目。 我觉得我的很多代码可以/应该可重用于我可能想要承担的任何其他项目。

我打算启动一个库项目,但我不知道如何链接到 SDL 库。

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

所以我的问题:

是不是因为构建库只是一个编译操作,所以没有链接器设置?

一般来说,是否可以在现有库的基础上构建一个库? 也就是说,使用 SDL 函数和结构编写我的库。 或者我是否必须获取源代码并完全重建包含我的代码?

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

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

c++ eclipse-cdt
2个回答
2
投票

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

是不是因为构建库只是一个编译操作,所以没有链接器设置?

我猜您在这种情况下正在创建一个静态库。静态库只是构成源树的所有单个对象文件(即编译器生成的

.o
文件)在一个对象文件中的集合。不多也不少。

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

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

一般来说,是否可以在现有库的基础上构建一个库?也就是说,使用 SDL 函数和结构编写我的库。或者我是否必须获取源代码并完全重建包含我的代码?

对于静态库和动态库来说,这是完全可能的。

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

在这种情况下,无法提供建议,因为您没有指定足够的信息。 看看这个:何时使用动态库和静态库,以及this,以获得某种指导。

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

我认为上面的两个链接为您提供了大量信息。如果您想进一步了解详细信息,您可以从这篇维基百科文章开始并从那里浏览。


2
投票

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

我认为此页面解释了您所有其他问题:MingW 中的 DLL 创建

© www.soinside.com 2019 - 2024. All rights reserved.