繁体   English   中英

在Arduino IDE中使用regex库时,未定义对`longjmp'的引用

[英]undefined reference to `longjmp' while using library for regex in Arduino IDE

我在使用Nick Gammon的Regexp库时遇到此错误。 错误如下:

libraries/Regexp/Regexp.cpp.o:(.text._ZL5errorc+0x4): undefined reference to `longjmp'
libraries/Regexp/Regexp.cpp.o: In function `error':
/Users/jaiprak/projects/Arduino/libraries/Regexp/Regexp.cpp:640: undefined reference to `longjmp'
libraries/Regexp/Regexp.cpp.o: In function `max_expand':
/Users/jaiprak/projects/Arduino/libraries/Regexp/Regexp.cpp:640: undefined reference to `setjmp'
libraries/Regexp/Regexp.cpp.o: In function `MatchState::Match(char const*, unsigned int)':
/Users/jaiprak/projects/Arduino/libraries/Regexp/Regexp.cpp:640: undefined reference to `setjmp'
collect2: error: ld returned 1 exit status
exit status 1
Error compiling for board Generic ESP8266 Module.

这是我的Arduino代码:

#include <Regexp.h>

// called for each match
void match_callback  (const char * match,          // matching string (not null-terminated)
                  const unsigned int length,   // length of matching string
                  const MatchState & ms)      // MatchState in use (to get captures)
{
    char cap [10];   // must be large enough to hold captures

    Serial.print ("Matched: ");
    Serial.write ((byte *) match, length);
    Serial.println ();

    for (byte i = 0; i < ms.level; i++)
    {
        Serial.print ("Capture "); 
        Serial.print (i, DEC);
        Serial.print (" = ");
        ms.GetCapture (cap, i);
        Serial.println (cap); 
    }  // end of for each capture

}  // end of match_callback 


void setup ()
{
      Serial.begin (115200);
      Serial.println ();
      unsigned long count;

      // what we are searching (the target)
      char buf [100] = "The quick brown fox jumps over the lazy wolf";

      // match state object
      MatchState ms (buf);

      // original buffer
      Serial.println (buf);

      // search for three letters followed by a space (two captures)
      count = ms.GlobalMatch ("(%a+)( )", match_callback);

      // show results
      Serial.print ("Found ");
      Serial.print (count);            // 8 in this case
      Serial.println (" matches.");


}  // end of setup  

void loop () {}

setjmplongjump是的libc normaly一部分不使用ESP8266芯为Arduino的

此问题在#910中描述。 注释建议在libc_replacements.c中实现它,而不指示如何实现它。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM