【问题标题】:Unknown type name 'namespace' in Xcode 4.2Xcode 4.2 中的未知类型名称“命名空间”
【发布时间】:2011-12-19 23:42:07
【问题描述】:

我正在编译QCAR SDK,但是我在项目中添加更多框架后提示错误。

// Matrices.h
//
#ifndef _QCAR_MATRIX_H_
#define _QCAR_MATRIX_H_

namespace QCAR
{

/// Matrix with 3 rows and 4 columns of float items
struct Matrix34F {
    float data[3*4];   ///< Array of matrix items
};


/// Matrix with 4 rows and 4 columns of float items
struct Matrix44F {
    float data[4*4];   ///< Array of matrix items
};

} // namespace QCAR

#endif //_QCAR_MATRIX_H_

namespace QCAR 行中,写着Unknown type name 'namespace'

我该怎么办?

更新:这是构建记录

In file included from ../../build/include/QCAR/Tool.h:18:
In file included from /Users/Raptor.Kwok/Documents/xCodeProjects/qcar-ios-1-0-0/samples/ImageTargets/ImageTargets/EAGLView.h:14:
In file included from /Users/Raptor.Kwok/Documents/xCodeProjects/qcar-ios-1-0-0/samples/ImageTargets/ImageTargets/ImageTargetsAppDelegate.h:9:
In file included from /Users/Raptor.Kwok/Documents/xCodeProjects/qcar-ios-1-0-0/samples/ImageTargets/CouponBook.m:12:
../../build/include/QCAR/Matrices.h:16:1: error: unknown type name 'namespace' [1]
 namespace QCAR
 ^
../../build/include/QCAR/Matrices.h:16:15: error: expected ';' after top level declarator [1]
 namespace QCAR
               ^
               ;
fix-it:"../../build/include/QCAR/Matrices.h":{16:15-16:15}:";"
In file included from /Users/Raptor.Kwok/Documents/xCodeProjects/qcar-ios-1-0-0/samples/ImageTargets/ImageTargets/ImageTargetsAppDelegate.h:9:
In file included from /Users/Raptor.Kwok/Documents/xCodeProjects/qcar-ios-1-0-0/samples/ImageTargets/CouponBook.m:12:
/Users/Raptor.Kwok/Documents/xCodeProjects/qcar-ios-1-0-0/samples/ImageTargets/ImageTargets/EAGLView.h:52:5: error: type name requires a specifier or qualifier [1]
     QCAR::Matrix44F projectionMatrix;
     ^
/Users/Raptor.Kwok/Documents/xCodeProjects/qcar-ios-1-0-0/samples/ImageTargets/ImageTargets/EAGLView.h:52:10: error: expected expression [1]
     QCAR::Matrix44F projectionMatrix;
          ^
/Users/Raptor.Kwok/Documents/xCodeProjects/qcar-ios-1-0-0/samples/ImageTargets/ImageTargets/EAGLView.h:52:5:{52:5-52:9}: warning: type specifier missing, defaults to 'int' [-Wimplicit-int,3]
     QCAR::Matrix44F projectionMatrix;
     ^~~~
1 warning and 4 errors generated.

【问题讨论】:

  • 未来读者注意: QCAR 现在重命名为 Vulforia,其中上述错误不会再次出现在任何示例项目中。

标签: objective-c xcode4.2 vuforia


【解决方案1】:

我怀疑翻译是 C 或 Objective-C,其中 namespace 不是 C++ 和 Objective-C++ 中的关键字。

另一种可能性是之前的标头没有关闭主体(例如,在类声明的末尾忘记了};,在函数定义的末尾忘记了})。

【讨论】:

  • 可能是xCode 4.2 & QCAR SDK 1.0 的兼容性问题。请参阅:ar.qualcomm.com:443/arforums/showthread.php?t=1079(需要 QCAR SDK 登录)
  • @Shivan MoSR 提出了与我相同的建议。如果您编辑帖子并为产生错误的文件添加构建脚本,那么我可以验证是否是这种情况。
  • @Shivan 您正在编译的文件是 .m 文件,用于 objc。脚本的开头缺少命令调用,因此我不能确定编译器已被告知将文件编译为 objc++。所以,试试这个:将扩展名从 CouponBook.m 更改为 CouponBook.mm。使用.mm,除非您在其他地方明确禁用该行为,否则该文件将被编译为 objc++。为了让编译器在同一个翻译中识别 c++ 和 objc 程序,您需要编译为 objc++。
  • 正确。在我重命名为.mm 后,问题就消失了。感谢您的帮助!
【解决方案2】:

您可以使用 .mm 重命名文件,也可以选择 .m 文件并将“文件类型”更改为“Objective-C++ 源代码”。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-10-28
    • 2013-06-26
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多