.m文件导入C++头文件带来的错误
2014-07-30 22:20
281 查看
这几天的工作挖了不少的坑,遇到了各种千奇百怪的错误,现在好好总结一下。
新建一个工程,然后新建HelloCPP.h,HelloCPP.cpp文件,HelloCPP.h文件内容如下:
就一个空的namespace。
然后在ViewController.m中导入HelloCPP.h,如下:
接着Run,报错,提示如下:
被导入的C++头文件无法识别其命名空间。
解决方法:
通常在工程中,如果遇到在OC中使用C++代码运行异常的问题,是因为其中的C++头文件被一个OC .m文件引用了。为了实现OC和C++混编,必须要将引用的.m文件后缀修改为.mm。
新建一个工程,然后新建HelloCPP.h,HelloCPP.cpp文件,HelloCPP.h文件内容如下:
#ifndef __CPPWrong__HelloCPP__ #define __CPPWrong__HelloCPP__ //#include <stdio.h> namespace hello { }; #endif /* defined(__CPPWrong__HelloCPP__)
就一个空的namespace。
然后在ViewController.m中导入HelloCPP.h,如下:
#import "ViewController.h" // 导入C++头文件 #import "HelloCPP.h" @interface ViewController () @end @implementation ViewController - (void)viewDidLoad { [super viewDidLoad]; // Do any additional setup after loading the view, typically from a nib. } - (void)didReceiveMemoryWarning { [super didReceiveMemoryWarning]; // Dispose of any resources that can be recreated. } @end
接着Run,报错,提示如下:
被导入的C++头文件无法识别其命名空间。
解决方法:
通常在工程中,如果遇到在OC中使用C++代码运行异常的问题,是因为其中的C++头文件被一个OC .m文件引用了。为了实现OC和C++混编,必须要将引用的.m文件后缀修改为.mm。
相关文章推荐
- .m文件导入C++头文件带来的错误
- 关于C++头文件#include<iostream.h>debug时提示文件目录不存在错误解决方法?
- Access文件(.mdb)导入SQL Server时"错误代码为 0xC0202009"的解决方法
- 用C#.net编写导入导出EXCEL文件的代码。编绎运行后,错误提示: 找不到可安装的ISAM
- C++根据头文件自动生成实现文件框架(支持模版)
- 使用c头文件和c++头文件区别
- c/c++头文件与cpp文件的切换实现
- [导入]解决打开CHM格式文件出现“网页不能浏览”错误的方法
- Mysql导入备份文件发生错误 SQL1153
- 我用myeclipse导入了一个用eclipse开发的项目,项目上有个差报错,是里面几个页面报的假错,部署到tomcat后,tomcat配置里这个项目的running值是false,访问就报404错误,而且不编译class文件
- [导入]在 Visual Studio .NET IDE 内使用“从源代码管理打开”时出现无法读取项目文件的错误
- c++ 一个头文件引用另一个头文件的类
- [导入]上传大文件时,找不到服务器的错误问题!
- FAT32文件系统中使用VS2005调试C++项目出现MSVCP80D.dll错误
- C++学习的一些笔记-->2:防止头文件多次导入造成重复编译的方法
- Excel文件无法导入,错误: 它已经被别的用户以独占方式打开,或没有查看数据的权限。
- [导入]在 Visual Studio .NET IDE 内使用“从源代码管理打开”时出现无法读取项目文件的错误
- sqlserver 中用bcp导入数据遇到"在BCP数据文件中遇到的意外的EOF"错误
- 解决Oracel导入dmp文件错误问题
- Cabide.c++中导入.mmp文件