编译ArduinoJson例程StringExample报错

In file included from C:\Users\Dylan\AppData\Local\Arduino15\packages\realtek\hardware\AmebaD\3.1.1\cores\arduino/WString.h:29:0,
from C:\Users\Dylan\AppData\Local\Arduino15\packages\realtek\hardware\AmebaD\3.1.1\cores\arduino/Arduino.h:118,
from sketch\StringExample.ino.cpp:1:
C:\Users\Dylan\Documents\Arduino\libraries\ArduinoJson\src/ArduinoJson/Polyfills/pgmspace.hpp: In function ‘void* pgm_read_ptr(ArduinoJson6190_F1::pgm_p)’:
C:\Users\Dylan\AppData\Local\Arduino15\packages\realtek\hardware\AmebaD\3.1.1\cores\arduino/avr/pgmspace.h:48:61: error: cannot convert ‘ArduinoJson6190_F1::pgm_p’ to ‘const void*’ for argument ‘2’ to ‘void* _memcpy(void*, const void*, SIZE_T)’
#define memcpy_P(dest, src, num) memcpy((dest), (src), (num))

1 Like

hi @dylan8rlt

你是从这个 GitHub 下载的 Library 用吗?
能分享产生 error 的 ino 代码吗?

Hi @dylan8rlt ,

或許你可以去到Ameba Arduino的官方Github上,提交一個issue來要求這個功能,那邊會比較容易討論技術問題,並及時追蹤最新的功能 https://github.com/ambiot/ambd_arduino/issues

通过Arduino软件的库管理器安装的,示例代码也是Example中的,参考StringExample.ino | ArduinoJson 6

Hi @xidameng
好的,谢谢提醒

1 Like

今天搜索相关信息,发现前几天已有人提了类似Issue,目前ArduinoJson官方已完成这个问题的修复。参考:https://github.com/bblanchon/ArduinoJson/issues/1707

1 Like

對 ,只要加一行

#undef memcpy_P

就可以了

本質上就是ArduinoJson lib使用了一個標準庫中的function memcpy_P, 但是在ArduinoJson中的另一個function pgm_read_ptr, 它給memcpy_P傳入了一個錯誤的data type,因此通過#undef memcpy_P, 我們就可以使用ArduinoJson lib中自帶的memcpy_P function了,這樣data type的問題就解決了