致命错误:strtok_r.h:没有这样的文件或目录(在MinGW中编译tesseract-ocr-3.01时)

时间:2012-10-19 11:55:02

标签: c++ compiler-errors mingw tesseract

我在MinGW中编译tesseract-ocr-3.01,我收到此错误ambigs.cpp:31:22: fatal error: strtok_r.h: No such file or directory

这是错误的代码:

#ifdef WIN32
#ifndef __GNUC__
#define strtok_r strtok_s
#else
#include "strtok_r.h"
#endif  /* __GNUC__ */
#endif  /* WIN32 */

修改

我向add strtok_r.h to MinGW发现了此功能请求。从那里的评论:

  

strtok_r()是一个可选 POSIX函数,仅用于   支持POSIX线程的实现。 MinGW不支持   POSIX线程;因此,我认为这个功能没有   放在MinGW基地发行。

     

pthreads-win32提供了对MS-Windows的POSIX线程支持   项目。也许他们已经提供了strtok_r()实现。如果   那么,你可以使用它;如果没有,你可能会要求他们考虑   加上它。

1 个答案:

答案 0 :(得分:1)

通过向项目的来源添加strtok_r implementation可以轻松解决问题:

char *strtok_r(char *str, const char *delim, char **save)
{
    char *res, *last;

    if( !save )
        return strtok(str, delim);
    if( !str && !(str = *save) )
        return NULL;
    last = str + strlen(str);
    if( (*save = res = strtok(str, delim)) )
    {
        *save += strlen(res);
        if( *save < last )
            (*save)++;
        else
            *save = NULL;
    }
    return res;
}