标签: jansson

如何在 Azure Sphere Visual Studio 项目中添加库依赖项?

我正在构建一个 Azure Sphere C 应用程序,从 HTTPS_Curl_Easy 示例项目开始。我需要json解析,所以下载了Jansson库代码。Jansson 在使用 Cmake 时生成的项目不会添加作为对我的 Sphere 项目的引用,因为它针对的是 Win32,所以我创建了一个空的 Azure 球体库项目,将所有 jansson 代码复制到其中并弄乱了定义的变量,直到项目编译。

现在我正在尝试将该 Jansson 库添加到我的 HTTPS_Curl_Easy 示例中,但是我无法让它在项目中可用(它说 jansson.h 不可用): 在此处输入图片说明

两个具体问题:

  1. 在 azure Sphere 库项目中,我如何告诉它要导出什么?项目模板有一个 Inc\Public 文件夹 - 头文件必须在那里吗?(我的不是因为源不会在那里构建)

  2. 我应该如何在 Azure Sphere 项目中添加对库项目的引用?我右键单击该项目并单击 add->reference 以添加我的 jansson_sphere 库项目,但尽管它在项目文件中,但它并未显示在我能找到的任何依赖项列表中。

我的项目和我尝试构建 Jansson 的源代码在 github 中:https : //github.com/Joon/HTTPS_Curl_Easy

c azure iot jansson azure-sphere

5
推荐指数
1
解决办法
132
查看次数

文件读取缓冲区C和C++之间相同的方法?

我使用Jansson C库来解析一些JSON文件,并使用示例文件中使用的方法,我尝试使用类似C的代码解析它:

FILE *f = fopen(json_path.c_str(), "r");
fseek(f, 0L, SEEK_END);
long size = ftell(f);
fseek(f, 0L, SEEK_SET);
char* data = (char*)malloc((size + 1) * sizeof(char));
long rd = fread((void*)data, 1, size, f);
json_t* root = load_json(data);
Run Code Online (Sandbox Code Playgroud)

虽然这个代码在编译时效果很好gcc,但是如果它是由g++我编译的话就不会,因为它是在C++类中实现的.Jansson库返回的错误与文件结尾字符有关.

那时我尝试实现一个更优雅的C++代码来做到这一点:

std::ifstream f(json_path.c_str());
if (f) {
  std::stringstream s;
  s << f.rdbuf();
  f.close();
  json_t* root = load_json(s.str().c_str());
}
Run Code Online (Sandbox Code Playgroud)

并且该代码永远不会失败,而在我看来两者应该做同样的事情.

我是否在我的C代码中犯了错误,以便在整个缓冲区中读取文件?C++编译如何解释类​​似C的代码,以便文件结束字符可以"消失"?

c c++ jansson

3
推荐指数
1
解决办法
94
查看次数

标签 统计

c ×2

jansson ×2

azure ×1

azure-sphere ×1

c++ ×1

iot ×1