mingw32-make ERROR,错误:'once_flag'在命名空间'std'中没有命名类型 [英] mingw32-make ERROR, error: 'once_flag' in namespace 'std' does not name a type

查看:1821
本文介绍了mingw32-make ERROR,错误:'once_flag'在命名空间'std'中没有命名类型的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

  c:\libapiai-master \libapiai-master\build\examples> mingw32-make install 
mingw32-make install
[5% ]建立目标indent_stream_library
[10%]建立目标cJson
[12%]构建CXX对象apiai / CMakeFiles / apiai.dir / src / AI.cpp.obj
C:\libapiai -master \libapiai-master\apiai\src\AI.cpp:1:0:warning:-fPIC忽略目标(所有代码与位置无关)[默认启用]
#include< apiai / AIh。
^
C:\libapiai-master \libapiai-master\apiai\src\AI.cpp:在静态成员函数'static ai :: Service& ai :: AI :: sharedService()':
C:\libapiai-master\libapiai-master\apiai\src\AI.cpp:42:12:错误:'once_flag' 'std'没有命名类型
static std :: once_flag once_flag;
^
C:\libapiai-master \libapiai-master\apiai\src\AI.cpp:45:5:错误:'call_once'不是'std'
std :: call_once(once_flag,[](){
^
C:\libapiai-master\libapiai-master\apiai\src\AI.cpp:45 :20:错误:'once_flag'未在此范围中声明
std :: call_once(once_flag,[](){
^
apiai\CMakeFiles\apiai.dir\ build.make:62:目标'apiai / CMakeFiles / apiai.dir / src / AI.cpp.obj'的配方失败
mingw32-make [16]:*** [apiai / CMakeFiles / apiai.dir / src / AI.cpp.obj]错误1
CMakeFiles\Makefile2:179:目标'apiai / CMakeFiles / apiai.dir / all'失败的食谱
mingw32-make [15]:*** [apiai / CMakeFiles / apiai.dir / all]错误2
Makefile:137:目标'all'失败的食谱
mingw32-make [14]:*** [all]错误2

我创建了api.ai库,我使用MinGW。
我做了Makefile,新错误
问题是什么?

解决方案

MinGW(但不是MinGW-w64)目前不支持完整的pthread接口,包括 std :: once_flag



您应该切换到MinGW-w64或使用Win32 API。此外,使用 mingw-std-threads 的MinGW,您可以拥有部分线程支持。 p>

c:\libapiai-master\libapiai-master\build\examples>mingw32-make install
mingw32-make install
[  5%] Built target indent_stream_library
[ 10%] Built target cJson
[ 12%] Building CXX object apiai/CMakeFiles/apiai.dir/src/AI.cpp.obj
C:\libapiai-master\libapiai-master\apiai\src\AI.cpp:1:0: warning: -fPIC ignored for target (all code is position independent) [enabled by default]
 #include <apiai/AI.h>
 ^
C:\libapiai-master\libapiai-master\apiai\src\AI.cpp: In static member function 'static ai::Service& ai::AI::sharedService()':
C:\libapiai-master\libapiai-master\apiai\src\AI.cpp:42:12: error: 'once_flag' in namespace 'std' does not name a type
     static std::once_flag once_flag;
            ^
C:\libapiai-master\libapiai-master\apiai\src\AI.cpp:45:5: error: 'call_once' is not a member of 'std'
     std::call_once(once_flag, [](){
     ^
C:\libapiai-master\libapiai-master\apiai\src\AI.cpp:45:20: error: 'once_flag' was not declared in this scope
     std::call_once(once_flag, [](){
                    ^
apiai\CMakeFiles\apiai.dir\build.make:62: recipe for target 'apiai/CMakeFiles/apiai.dir/src/AI.cpp.obj' failed
mingw32-make[16]: *** [apiai/CMakeFiles/apiai.dir/src/AI.cpp.obj] Error 1
CMakeFiles\Makefile2:179: recipe for target 'apiai/CMakeFiles/apiai.dir/all' failed
mingw32-make[15]: *** [apiai/CMakeFiles/apiai.dir/all] Error 2
Makefile:137: recipe for target 'all' failed
mingw32-make[14]: *** [all] Error 2

I built api.ai library. I used MinGW to that. I made Makefile, but I made new error too. What is the problem?

解决方案

MinGW (but not MinGW-w64) does not currently support the full pthread interface, including std::once_flag.

You should switch to MinGW-w64 (pthread support) or use the Win32 API. Furthermore, MinGW with mingw-std-threads, you can have partial threading support.

这篇关于mingw32-make ERROR,错误:'once_flag'在命名空间'std'中没有命名类型的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆