【问题标题】:Zlib linking problemsZlib 链接问题
【发布时间】:2013-12-13 12:15:24
【问题描述】:

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

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

我将继续向您介绍我是如何链接 zlib 的,因为我什至不确定我在哪一步搞砸了:

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

  4. 我从地图加载器的源文件中编译了一个示例,并在 4 次不同的情况下出现了“未定义的对 inflate 的引用”的错误。在这一点上,我已经想到我在链接时犯了一个错误,所以那是我去谷歌的时候。大多数答案只是“添加 -lz”或“链接 libz”

好吧,我根本不知道“add -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 toinflate' 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 toinflateEnd' collect2.exe:错误:ld 返回 1 退出状态 进程以状态 1 终止(0 分 10 秒) 4 个错误,0 个警告(0 分 10 秒)

【问题讨论】:

  • 你能显示你的配置正在创建的链接命令吗?
  • 编译器选项 -lsomething 告诉编译器去寻找一个名为 libsomething.a 的文件(或任何适合平台的文件扩展名),并与之链接。
  • @woolstar 如何访问正在创建的配置?
  • 我不熟悉代码块,但如果有控制台或日志窗口显示构建命令,您可以尝试从那里抓取文本。
  • @woolstar 已编辑帖子,立即查看

标签: c++ linker codeblocks libraries zlib


【解决方案1】:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-01-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多