SeeedJP / WioLTEforArduino

GNU General Public License v2.0
33 stars 19 forks source link

src/internal/AtSerial.hでstd::functionの未定義エラーが発生する #32

Closed poponta closed 4 years ago

poponta commented 4 years ago

Wio LTE for Arduino version : 2.12.0 Aruinod IDE version : 1.8.13

上記水準にて、標記のエラーが発生する場合があるようです。 AtSerial.h内で

include <functional>

を追加することで、エラーの発生を抑制できました。

matsujirushi commented 4 years ago

ご連絡ありがとうございます!

手元の下記環境で、エラーが再現しない状況です。

ご使用のボードパッケージ、ならびに、その他お気づきの点があれば教えていただけませんか。

poponta commented 4 years ago

早速のご確認、誠にありがとうございます! 助かります。

本現象が発生した際のボードパッケージには、

を使用しておりました。 これは、アプリケーション側で上記パッケージが持つRTClockライブラリを使用しているためです。

ここで、ボードパッケージを、ご指定いただいた

にしたところ、AtSerial.hでのエラーは発生しなくなりました。 (ただ、このパッケージはRTClockライブラリを持っていないので、別途対応は必要になります)

この双方を比較してみると、SeeedJPのパッケージ(1.4.0)では、WInterrupts.h及びinterrupt.hにてfunctionalがincludeされているのに対し、Seeed (JP mirror)のパッケージ(1.1.0)では、functionalがインクルードされている箇所がございませんでした。

SeeedJPのパッケージ(1.4.0)を使えば、AtSerial.hがincludeされる時にはすでにWInterrupts.h及びinterrupt.hがincludeされているため、結果としてfunctionalもincludeされた状態で読みだされ、エラーが発生していないものと存じます。(WInterrupts.hがwiring.hを介して、最終的にArduino.hから読みだされる) しかし、Seeed (JP mirror)のパッケージ(1.1.0)を使ってしまうと、AtSerial.hがincludeされた時にはfunctionalがincludeされていないため、下記のエラーが発生します。

C:\Users\hogehoge\Documents\Arduino\libraries\Wio_LTE_for_Arduino\src/Internal/AtSerial.h:15:2: error: 'function' in namespace 'std' does not name a type

ですので、ユーザ側の対応としてボードパッケージに

を使用することで本エラーは抑制されます。 (ただ、もしどこかのタイミングでWInterrupts.h及びinterrupt.hからfunctionalのincludeが消えてしまうと上記エラーが発生する恐れもあるので、AtSerial.hでfunctionalをincludeしても良いかなとも存じます)

長文失礼いたしました。

matsujirushi commented 4 years ago

https://github.com/SeeedJP/WioLTEforArduino/commit/67ae101e0b82d130ee47ab7572ab61e294e1bca0

matsujirushi commented 4 years ago

https://github.com/SeeedJP/WioLTEforArduino/releases/tag/2.13.0

matsujirushi commented 4 years ago

詳細に調査、連絡いただきましてありがとうございます。 includeを追加したライブラリをリリースしました。(v2.13)

ただ、Seeed STM32 Board(JP mirror)はディスコンですのでSeeedJP STM32 Boardsへの変更をオススメします。 RTClockライブラリですが、、、類似品としてSTM32RTCSeeedJP STM32 Boards+Wio LTE Cat.1で実績があります。 そちらの目的に合うか分かりませんが、参考になればと思います。