【问题标题】:fatal error: strtok_r.h: No such file or directory (while compiling tesseract-ocr-3.01 in MinGW)致命错误:strtok_r.h:没有这样的文件或目录(在 MinGW 中编译 tesseract-ocr-3.01 时)
【发布时间】:2012-10-19 11:55:01
【问题描述】:

我正在 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。从那里的cmets:

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

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

【问题讨论】:

    标签: c++ compiler-errors mingw tesseract


    【解决方案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;
    }
    

    【讨论】:

    • 确实,只需将上面粘贴到 ambigs.cpp 即可解决问题。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-07-12
    • 1970-01-01
    • 2021-01-18
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多