我在嵌入式目标上使用 RapidJSON 时遇到问题。在 Windows 下,一切都像魅力一样工作。
以下简单测试不适用于我的目标:
#include "rapidjson/document.h"
#include "rapidjson/prettywriter.h"
#include "rapidjson/error/en.h"
using namespace rapidjson;
std::string temp = "{ \"Checksum\": 12345678912344567, \"Parameters\": [ 1, 2, 3 ] }" ;
Document json;
json.Parse( temp.c_str() );
if ( json.HasParseError() )
{
Logger::Log( Logger::ERROR, GetParseError_En( json.GetParseError() ),
"Read" );
return NULL;
}
if ( !json.IsObject() )
{
Logger::Log( Logger::ERROR, "Problems parsing the JSON file: " + filename,
"Read" );
return NULL;
}
解析不会返回任何错误。如果在 JSON 中添加错误,RapidJSON 会正确报告错误(在目标上也是如此)。
使用 json.GetType() 获取类型返回 180 (dec) 并且 IsInt64()、IsUint64() 和 IsDouble() 返回 true。
吸气剂的结果:
json.GetUint64() -> 269079258591236
json.GetInt64() -> 269079258591236
json.GetDouble() -> 0
我的编译器标志:
gnu_arm_4.7.4_20130913/bin/arm-none-eabi-g++.exe -DBOOST_ALL_NO_LIB -DBOOST_HAS_STDINT_H \
-DBOOST_LEXICAL_CAST_ASSUME_C_LOCALE -DBOOST_NO_STD_LOCALE -DBSPCFG_ENABLE_CPP -DMQX_ENABLE_CPP \
-DMQX_SUPPRESS_FILE_DEF -DRAPIDJSON_HAS_STDSTRING -mcpu=cortex-a5 -mfloat-abi=hard -mfpu=neon-vfpv4 \
-g -D__MQXOS__ -D__GNU__ -D__STRICT_ANSI__ -nostdinc -mthumb -mthumb-interwork -mno-unaligned-access \
-fcommon -ffreestanding -fno-builtin -ftree-vectorize -DGTF_STATIC_BUILD -fvisibility=hidden -Wall \
-Wshadow -Wno-invalid-offsetof -Wuninitialized -fno-strict-aliasing -fshort-enums -fno-exceptions \
-fno-rtti -pipe -fPIC -O3 -DNDEBUG
目标操作系统是来自飞思卡尔(现为 NXP)的名为 MQX 的实时系统。
你有什么提示,可能是什么问题?
谢谢