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

时间:2011-05-27 15:43:29

标签: c++ compiler-construction eclipse-cdt

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

我打算开始一个图书馆项目,但我不知道如何连接到SDL库。

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

所以我的问题:

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

总的来说,是否可以在现有库之上构建库?也就是说,使用SDL函数和stucts编写我的库。或者我是否必须获取源代码并完全重建我的代码?

此外,在此实例中有关共享与静态的建议吗?

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

2 个答案:

答案 0 :(得分:2)

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

我认为此页面会解释您的所有其他问题:DLL Creation in MingW

答案 1 :(得分:2)

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

  

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

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

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

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

  

总的来说,是否可以在现有库之上构建库?也就是说,使用SDL函数和stucts编写我的库。或者我是否必须获取源代码并完全重建我的代码?

对于静态库和动态库都是完全可能的。

  

此外,在此实例中有关共享与静态的建议吗?

在这种情况下,无法提供建议,因为您没有指定足够的信息。 请看这个:When to use dynamic vs. static librariesthis,以获得一种指导方针。

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

我认为上面的两个链接为您提供了大量信息。如果您想进一步了解详情,可以从this wikipedia article开始,然后从那里浏览。