當使用OpenCV for iOS項目時,互聯網上的大多數文章建議將.m
更改爲.mm
。OpenCV with Objective C vs Objective C++
但是,由於Objective C是C++的一個嚴格超集,爲什麼我們需要做這個改變?更糟糕的是,如果不更改.m
到.mm
,#import <opencv2/opencv.hpp>
失敗
當使用OpenCV for iOS項目時,互聯網上的大多數文章建議將.m
更改爲.mm
。OpenCV with Objective C vs Objective C++
但是,由於Objective C是C++的一個嚴格超集,爲什麼我們需要做這個改變?更糟糕的是,如果不更改.m
到.mm
,#import <opencv2/opencv.hpp>
失敗
Objective-C是不是是C++的超集。將.m更改爲.mm會將文件從Objective-C更改爲Objective-C++,它是C++的超集。
編譯器需要知道處理的是哪種類型的代碼。
通過使用.mm,編譯器期望Obj-C和C++。 通過使用.m它只預計Obj-C
根據文件擴展名的不同處理編譯。