【发布时间】:2013-12-13 12:15:24
【问题描述】:
我正在使用 CodeBlocks(最新版本,目前我不确定是什么)
我正在尝试使用 fallahn 的 SFML Tiled 地图加载器,到目前为止,我已经成功地静态链接了 SFML,并将地图加载器文件包含在我的源代码中,并将其添加到我的搜索目录中,但是,我有链接 zlib(地图加载器使用)时遇到问题
我将继续向您介绍我是如何链接 zlib 的,因为我什至不确定我在哪一步搞砸了:
- 显然,我转到 http://zlib.net 并获取了最新版本 (1.2.8)
- 我把它解压到我的桌面
我进入了我的项目的构建选项,最初我认为“我将像以前一样全局设置我的搜索目录”(对于 SFML 和地图加载器,有一个 'include' 和 'lib' 文件夹,我将“include”放在编译器搜索目录中,将“lib”放在链接器搜索目录中),除了我从解压缩中获得的文件夹中没有名为“include”或“lib”的文件夹。这是我简单地包含了我解压缩的整个文件夹的地方(我很确定这是一种糟糕的做法,但我不确定还能做什么)
我从地图加载器的源文件中编译了一个示例,并在 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