从工作iOS项目中导入.cpp文件并将其重命名为.mm问题
Import .CPP files from a working iOS project and rename to .mm issue
我已将.cpp及其.h文件从工作项目复制到新项目。
我将结尾从.cpp重命名为.mm,但它仍然给我错误。
在.h文件中,靠近类定义 class MeterTable
,它说它期望;
在.mm文件中,有各种错误。
我想到通过更改实现文件的结尾。mm,它将清洁所有这些错误。是的,原始的.cpp文件在旧项目下编译。
看起来您将.h
文件包括到其他.m
文件中。您不能只将C 标头包含在C或Objective-C源文件中。您需要确保您的C 接口兼容C 接口(没有类,只有免费功能而不会超载)。或者,您必须将项目中的所有.m
文件更改为.mm
。
唯一的解决方案是拥有一个内联标头文件。
将您的 .h 文件更改为 .hpp ,然后将您的 .cpp 文件与您的 .h 文件组合。
为例;您的 .h 文件:
// class.h
class {
public:
void someclass(int a);
};
和您的 .cpp 文件:
// class.cpp
#include "class.h"
void someclass(int a) {
return;
}
合并 .hpp 喜欢这样:
// class.hpp
class {
public:
void someclass(int a) {
return;
}
};
Objective-C和C 可以很好地播放,但是有几个警告。首先,必须将引用C 代码的任何.m
文件定义为Objective-C 源, not> objective-C。这可以逐案进行,通过转到.m
文件的文件检查器并将文件类型从Objective-C Source
更改为Objective-C++
源。其次,使用相同的方法定义.h
和.cpp
(或.mm
,实际扩展名并不重要,它分别为C++ Header
和Objective-C++
源。
只要您使用此文件类型的隔离设定,就应该能够自由混合C - 我通常会在我的iOS代码中使用此范式来消耗C 。
相关文章:
- 不同C++文件中未命名命名空间中的名称可以引用同一个命名事物吗?
- 如何访问嵌套在命名命名空间中的未命名命名空间变量?
- 将文件重命名为已存在的文件名
- 将 .c 文件重命名为 .cpp,导入 Cython 库失败
- 为什么将可执行文件重命名为临时文件的此代码段不能按预期工作?
- 函数与来自未命名命名空间的参数的链接
- Foreward 声明在未命名命名空间中定义的类
- C++,包括未命名命名空间中的头文件
- 如何通过传递命名函数为unordered_set显式指定自定义哈希函数
- 字段名称与使用未命名命名空间的字段类型相同
- VS2013 在未命名命名空间中遇到基类问题
- 源文件中的未命名命名空间和局部变量
- 未命名命名空间中名称的外部链接
- 如何在监视窗口中转换为未命名命名空间中的类型
- 当外部命名空间具有具有相同名称的成员时,访问未命名命名空间的成员
- 在C++中,可以重命名/别名为非命名空间、非类名
- 为什么某些 Boost 函数不需要以命名空间为前缀
- 如何转发声明未命名命名空间中的类
- 提高正则表达式.命名组分为两部分
- 在c++中命名命名空间的最佳方法//当名称冲突时该怎么做