1

我在 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 */

编辑

我发现此功能请求将 strtok_r.h 添加到 MinGW。从那里的评论:

strtok_r() 是一个可选的POSIX 函数,仅在支持 POSIX 线程的实现中需要。MinGW 不支持POSIX 线程;因此,我认为这个函数在基础 MinGW 发行版中没有任何位置。

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

4

1 回答 1

1

通过将strtok_r 实现添加到项目的源中,最容易解决该问题:

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;
}
于 2012-10-19T14:28:04.507 回答