【发布时间】:2015-10-22 15:21:49
【问题描述】:
我在 Arm 设备上使用 rapidjson,运行此代码时出现奇怪的行为。
#include <document.h>
using namespace std;
int main()
{
const char json []="[{\"Type\":\"float\",\"val_param\" : 12.025 }]";
rapidjson::Document d;
if( d.Parse<0>( json ).HasParseError() ) {
//ErrorCase
}else{
rapidjson:: Value& val_param = d[0]["val_param"];
double tmp_double1 = val_param.GetDouble();
cout << tmp_double1 <<endl; // -9.2559641157289301e+61 instead of 12.025
}
return 0;
}
在否决这个问题之前。您还需要什么信息?我真的不知道如何隔离这个故障。如果是因为嵌入式设备而出现,或者rapidjson。以及如何解决。
===========================更新==================== =====================
什么是设备? http://www.keith-koep.com/de/produkte/produkte-trizeps/trizeps-iv-m-eigenschaften/
它有硬件 FPU 吗?它是 ARMv5,所以我不这么认为。
您正在使用哪些编译器和库(版本号/特定版本)? 您将哪些选项传递给编译器和链接器?
arm-linux-gnueabi-g++ -march=armv5te -marm -mthumb-interwork --sysroot=/usr/local/oecore-x86_64/sysroots/armv5te-linux-gnueabi
【问题讨论】:
-
应该是
d。 -
毁灭……........
-
你的设备上没有调试器吗?
-
按字符串索引数组? O.o [c] 标签在这里显然不合适......无论如何,这闻起来像一个浮点 ABI 问题,所以首先:设备是什么?它有硬件FPU吗?您正在使用哪些编译器和库(版本号/特定版本)?您将哪些选项传递给编译器和链接器?对于您不传递的选项,它们的默认值是如何配置的?
-
你在其他设备上试过了吗?