Zlib连接问题

时间:2013-11-27 17:47:33

标签: c++ linker codeblocks libraries zlib

在真正开始讨论这个问题之前,我认为值得一提的是,我对链接库和诸如此类的东西非常陌生。我从开源项目/游戏/等等和谷歌(以及与Thenewboston的Bucky的C ++有关的任何事情)中学到了我所知道的一切。在问之前我也做了相当多的研究,但无论如何:< / p>

问题本身就从这里开始

我正在使用CodeBlocks(最新版本,我不确定目前是什么)

我正在尝试使用fallahn的SFML Tiled地图加载器,到目前为止我已成功静态链接SFML并在我的源代码中包含了地图加载器文件,并将其添加到我的搜索目录中,但是,我有链接zlib(地图加载器使用)

的问题

我会继续介绍我如何链接zlib,因为我甚至不确定我搞砸了哪一步:

  1. 显然,我继续前往http://zlib.net并抓住了最新版本(1.2.8)
  2. 我将其解压缩到我的桌面
  3. 我进入了项目的构建选项,最初我想“我将像以前一样全局设置我的搜索目录”(对于SFML和地图加载器,有一个'include'和'lib'文件夹,我将'include'放在编译器搜索目录中,并在链接器搜索目录中放置'lib',除了在解压缩后的文件夹中没有名为'include'或'lib'的文件夹。这是我简单地包含我解压缩的整个文件夹的地方(我很确定这是一种可怕的做法,但我不确定还能做什么)

  4. 我从Map loader的源文件中编译了一个例子,并在4个不同的场合得到了'undefined reference to inflate'的错误。我已经想到了这一点,我在链接时犯了一个错误,所以当我拿到谷歌时。大多数答案只是“添加-lz”或“链接libz”

  5. 好吧,我不知道“添加-lz”是什么意思..就像所有,所以我只是链接“libz”,然后我的编译器给了我错误“ld.exe找不到-lz”,这导致我认为链接libz和添加-lz是一回事。

    无论如何,这里有一些我根本不懂的东西,如果你无法解释它们是什么,请至少解释一下如何盲目地做到: 1.编译库 2.与make文件有关,我不知道它们是什么或它们做什么 3.将命令添加到项目命令行。

    对不起,如果这是相当冗长的,但我觉得这个介绍是必要的,因为也许有人可以将我与我可能需要的任何补充知识联系起来,这将有所帮助,但提前感谢阅读。

    编辑:

    构建消息:

    C:/ Documents and Settings / Brenda / Desktop / sfml-tmxloader-master / src / MapLoaderPrivate.cpp:834:未定义引用inflateInit2_' C:/Documents and Settings/Brenda/Desktop/sfml-tmxloader-master/src/MapLoaderPrivate.cpp:843: undefined reference to inflate' C:/ Documents and Settings / Brenda / Desktop / sfml-tmxloader-master / src / MapLoaderPrivate.cpp:852:未定义引用inflateEnd' C:/Documents and Settings/Brenda/Desktop/sfml-tmxloader-master/src/MapLoaderPrivate.cpp:881: undefined reference to inflateEnd' collect2.exe:错误:ld返回1退出状态 进程终止,状态为1(0分10秒) 4个错误,0个警告(0分钟,10秒)

1 个答案:

答案 0 :(得分:0)

问题是,zlib不直接为MinGW提供二进制文件,它们只提供* .lib,* .def和* .dll文件,但是为了与MinGW / GCC链接,你需要一个* 。一份文件。 由于zlib是一个C库,因此ABI将是相同的,因此您可以“简单地”转换它,例如在lib2a的帮助下。虽然这应该可行,但是下载源代码并自己构建zlib可能更好,因为它附带了一个CMake文件,它很容易构建。

相关问题