码迷,mamicode.com
首页 > 编程语言 > 详细

.m文件导入C++头文件带来的错误

时间:2017-07-22 13:23:52      阅读:130      评论:0      收藏:0      [点我收藏+]

标签:c++   cpp   报错   namespace   rom   wrong   解决   loading   source   

这几天的工作挖了不少的坑。遇到了各种千奇百怪的错误,如今好好总结一下。

新建一个project,然后新建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++头文件无法识别其命名空间。


解决方法:

通常在project中,假设遇到在OC中使用C++代码执行异常的问题,是由于当中的C++头文件被一个OC .m文件引用了。为了实现OC和C++混编,必需要将引用的.m文件后缀改动为.mm



.m文件导入C++头文件带来的错误

标签:c++   cpp   报错   namespace   rom   wrong   解决   loading   source   

原文地址:http://www.cnblogs.com/liguangsunls/p/7220859.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!