问题描述
|
我正在使用SDL进行项目。我觉得我的很多代码可以/应该可重用于我可能要进行的任何其他项目。
我本来要开始一个库项目,但是我不知道如何链接到SDL库。
通常,我去项目设置并编辑Mingw32 Linker,以包括库(ming32,SDLmain和SDL)。但是链接器未显示在设置中。
所以我的问题是:
因为建立库只是编译操作,所以没有链接器设置吗?
通常,是否可以在现有库的基础上构建一个库?也就是说,使用SDL函数和构造写我的库。还是我必须获取源代码并完全使用我的代码进行重建?
另外,在这种情况下,关于共享还是静态的建议?
(此外,有关在何处进一步了解编译器和链接器等的任何建议。我在学校学习了数据结构,但没有更进一步)
解决方法
作为介绍,您必须将静态库与动态库区分开,它们是完全不同的野兽……对您的问题说:
因为建立库只是编译操作,所以没有链接器设置吗?
我猜您在这种情况下正在创建静态库。静态库只是构成源代码树的所有单个目标文件(即,编译器生成的“ 0”文件)在一个单一目标文件中的集合。不多不少。
使用静态库,您不需要指定哪个依赖项,因为可以理解的是,编译最终可执行文件时,库将与它依赖的所有其他库链接。因此,只有在那时(最终的可执行程序构建),才能检测到任何丢失的符号,并且所有其他库都必须可用。
共享库(也是动态库)是一个可执行文件,其中嵌入了它依赖的所有静态库。它也可以与其他嵌入式库共享外部依赖关系。
通常,是否可以在现有库的基础上构建一个库?也就是说,使用SDL函数和构造写我的库。还是我必须获取源代码并完全使用我的代码进行重建?
对于静态库和动态库,这都是完全可能的。
另外,在这种情况下,关于共享还是静态的建议?
在这种情况下,无法提供建议,因为您没有指定足够的信息。
看一下这一点:什么时候使用动态库与静态库,以及使用这本指南,以获得某种指导。
(此外,有关在何处进一步了解编译器和链接器等的任何建议。我在学校学习了数据结构,但没有更进一步)
我认为上面的两个链接可以为您提供大量信息。如果您想进一步了解细节,可以从此Wikipedia文章开始并从那里浏览。
, 您正在构建的库可以具有外部依赖项。这意味着您可以将其与SDL或所需的任何其他外部库链接。
我认为此页面解释了您所有其他问题:MingW中的DLL创建