【发布时间】:2018-09-23 04:38:29
【问题描述】:
我是一个相对缺乏经验的 C 开发人员,之前没有将其他开发人员制作的库集成到现有项目中的经验。
基本上,我需要一种在 AVR 微控制器中为大学项目解析 JSON 数据的方法。为此,我尝试将 jansson (https://github.com/akheron/jansson) 下载并集成到我现有的微控制器代码构建中。我正在 Windows 10 中使用 Atmel Studio,但我还安装了带有 MinGW GCC 的 Code::Blocks(在相同的 Windows 10 安装上),以构建库,并尝试将库集成到本机 Windows 应用程序中.到目前为止,两者都没有成功,我也遇到了同样的错误。到目前为止,我发现的所有在线资源都是基本有用的,或者远远超出我的理解范围。
这是我迄今为止所做的:
我首先尝试构建软件,然后按照https://jansson.readthedocs.io/en/2.11/gettingstarted.html 中的说明将其集成到现有项目中。我安装了 CMake,使用 cmake.exe -G “CodeBlocks - MinGW Makefiles” 为 Code::Blocks 构建项目文件,然后打开项目并构建所有内容。一些target(我相信和测试有关)构建失败,但是jansson自己构建并输出libjansson.a到\lib\目录,所以我没有想太多。
这是我所能得到的。在 Atmel Studio 和 Code::Blocks 中,我都做同样的事情:将 jansson.h 添加到相关的包含路径中,将#include “jansson.h”添加到所有相关文件中,并将 libjansson.a 作为库添加到每个 IDE 各自的链接器选项。我尝试了各种方法,例如向链接器添加和删除标志,但输出始终是“找不到 -ljansson”、“未定义对 'json_object_seed' 的引用”(这是我无缘无故调用的 API 中的一个函数除了查看项目是否已正确构建)和/或“ld 返回 1 个退出状态”。
我不禁觉得问题出在上面链接的文档中的“cc -o prog prog.c -ljansson”行。我真的不明白如何正确设置链接器以构建项目。
如果有人能深入了解我做错了什么/链接这个库的正确方法,我将不胜感激。
【问题讨论】:
标签: c codeblocks avr avr-gcc atmelstudio