Xcode:在全局命名空间中没有名为“xxx”的cstdlib成员。

6

enter image description here

我只需要更改搜索路径,告诉Xcode opencv的位置即可。 以下是我的搜索路径:

Framework search path: /usr/local/lib
Library search path: /usr/local/Cellar/opencv/2.4.11/lib
                     /usr/local/Cellar/opencv/2.4.11_1/lib
                     /user/local/lib
Header search path: /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include
                    /usr/local/include

错误信息:
    In file included from /Users/lilisun/Documents/opencv_projects/faceExtractor/faceExtractor/main.cpp:8:
In file included from /usr/local/include/opencv2/objdetect/objdetect.hpp:46:
In file included from /usr/local/include/opencv2/core/core.hpp:49:
In file included from /usr/local/include/opencv2/core/types_c.h:55:
In file included from /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.10.sdk/usr/include/assert.h:44:
In file included from /usr/local/include/c++/5.1.0/tr1/stdlib.h:32:
In file included from /usr/local/include/c++/5.1.0/tr1/cstdlib:34:
/usr/local/include/c++/5.1.0/cstdlib:118:11: error: no member named 'div_t' in the global namespace
  using ::div_t;
        ~~^
/usr/local/include/c++/5.1.0/cstdlib:119:11: error: no member named 'ldiv_t' in the global namespace
  using ::ldiv_t;
        ~~^
/usr/local/include/c++/5.1.0/cstdlib:121:11: error: no member named 'abort' in the global namespace
  using ::abort;
        ~~^
/usr/local/include/c++/5.1.0/cstdlib:122:11: error: no member named 'abs' in the global namespace
  using ::abs;
        ~~^
/usr/local/include/c++/5.1.0/cstdlib:123:11: error: no member named 'atexit' in the global namespace
  using ::atexit;
        ~~^
/usr/local/include/c++/5.1.0/cstdlib:129:11: error: no member named 'atof' in the global namespace
  using ::atof;
        ~~^
/usr/local/include/c++/5.1.0/cstdlib:130:11: error: no member named 'atoi' in the global namespace
  using ::atoi;
        ~~^
/usr/local/include/c++/5.1.0/cstdlib:131:11: error: no member named 'atol' in the global namespace
  using ::atol;
        ~~^
/usr/local/include/c++/5.1.0/cstdlib:132:11: error: no member named 'bsearch' in the global namespace
  using ::bsearch;
        ~~^
/usr/local/include/c++/5.1.0/cstdlib:133:11: error: no member named 'calloc' in the global namespace
  using ::calloc;
        ~~^
/usr/local/include/c++/5.1.0/cstdlib:134:11: error: no member named 'div' in the global namespace
  using ::div;
        ~~^
/usr/local/include/c++/5.1.0/cstdlib:135:11: error: no member named 'exit' in the global namespace
  using ::exit;
        ~~^
/usr/local/include/c++/5.1.0/cstdlib:136:11: error: no member named 'free' in the global namespace
  using ::free;
        ~~^
/usr/local/include/c++/5.1.0/cstdlib:137:11: error: no member named 'getenv' in the global namespace
  using ::getenv;
        ~~^
/usr/local/include/c++/5.1.0/cstdlib:138:11: error: no member named 'labs' in the global namespace
  using ::labs;
        ~~^
/usr/local/include/c++/5.1.0/cstdlib:139:11: error: no member named 'ldiv' in the global namespace
  using ::ldiv;
        ~~^
/usr/local/include/c++/5.1.0/cstdlib:140:11: error: no member named 'malloc' in the global namespace
  using ::malloc;
        ~~^
/usr/local/include/c++/5.1.0/cstdlib:142:11: error: no member named 'mblen' in the global namespace
  using ::mblen;
        ~~^
/usr/local/include/c++/5.1.0/cstdlib:143:11: error: no member named 'mbstowcs' in the global namespace
  using ::mbstowcs;
        ~~^
fatal error: too many errors emitted, stopping now [-ferror-limit=]
20 errors generated.

1
请提供一个最小化且完整的例子来重现此问题。 - Hiura
我无法重现这个错误。也许项目配置存在问题(最可能是系统头文件路径)? - Alexandre Hamez
1
@Hiura 抱歉无法提供可重现性。但我真的无法举例说明。 - Dylan
@AlexandreHamez 我会更新我所做的更改。 - Dylan
1个回答

5

我发现了我的错误。在头文件搜索路径中,我使用了带有递归的 /usr/local/include 。之后我将其更改为非递归的: /usr/local/include non-recursive /usr/local/include/opencv non-recursive /usr/local/include/opencv2 non-recursive

这样就可以正常工作了。但我仍然不知道为什么递归版本会导致错误。


怎么做呢?将 -I/usr/local/include 非递归地添加到编译器中即可。 - Liang Zulin

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接