开发者

Typedef for STL Vector does not compile in XCode

开发者 https://www.devze.com 2023-01-23 05:57 出处:网络
I have some code written in C++ which I would like to use in my iPhone app. I added the source files to the XCode project, but I have problem with some parts of the source code, e.g. I have he followi

I have some code written in C++ which I would like to use in my iPhone app. I added the source files to the XCode project, but I have problem with some parts of the source code, e.g. I have he following code:

#import <vector>
// (...) some other code
typedef std::vector<keypoint> keypointslist;
// (...) rest of the code

In the line with the typedef I'm getting:

Expected '=', ',', ';', 'asm' or 'attribute' before ':' token in

Exactly the same code was compiled with gcc on Linux machine, so I wonder why XCo开发者_JAVA技巧de has problem with it.

Any suggestions?


Are you sure, you told XCode to compile the file as C++ and not as C or Objective-C? Maybe you must use the file extension ".cpp".


It's called #include, not #import:

#include <vector>


+1 with Ludger,

youre adding that to an objective c app, you'll need to add a .cp/.mm/.cpp translation unit to the project to get that to compile - right click on project classes select add class make sure you add one from the cpp section.


If you include C++ code in a ".m" file you must rename the extension to ".mm" or ".M". this applies even if you reference a C++ class from an objective C one, the file must be renamed. Sometimes this renaming has a domino effect and so you end up with a lot of ".mm" files in your project.


Make sure you included <vector> header file before typedef. It looks like the compiler doesn't know std namespace.


You have to rename the ALL files that use the C++ code with .mm extension.

That includes your view controller files that could be importing the C++ class. eg. MyViewController.mm

0

精彩评论

暂无评论...
验证码 换一张
取 消