How can I use C++ with Objective-C in XCode

23,020

Solution 1

Make sure you compile that file as "Objective-C++".

The simplest way is to rename it as *.mm.

If you don't want to rename the *.m file,

  1. Select your file.
  2. Open the File Info dialog (Cmd+I)
  3. In File Type, select "sourcecode.cpp.objcpp"

Solution 2

Rename the Objective-C file from filename.m to filename.mm to make it compile as Objective-C++.

Share:
23,020

Related videos on Youtube

prosseek
Author by

prosseek

A software engineer/programmer/researcher/professor who loves everything about software building. Programming Language: C/C++, D, Java/Groovy/Scala, C#, Objective-C, Python, Ruby, Lisp, Prolog, SQL, Smalltalk, Haskell, F#, OCaml, Erlang/Elixir, Forth, Rebol/Red Programming Tools and environments: Emacs, Eclipse, TextMate, JVM, .NET Programming Methodology: Refactoring, Design Patterns, Agile, eXtreme Computer Science: Algorithm, Compiler, Artificial Intelligence

Updated on July 09, 2022

Comments

  • prosseek
    prosseek almost 2 years

    I want to use/reuse C++ object with Objective-C. I have a hello.h that has the class definition, and hello.cpp for class implementation.

    class Hello
    { int getX() ... };
    

    And I use this class in Objective-C function.

    #include "hello.h"
    ...
    - (IBAction) adderTwo:(id)sender
    {
        Hello *hi = new Hello();            
        int value = hi->getX();
        NSLog(@"Hello %d", value);
        [textField setIntValue:value];
    

    When I compile the code in Xcode, I get this error message.

    class Hello *XXXXX
    Users/smcho/Desktop/cocoa/adderTwo/hello.h:9:0
    /Users/smcho/Desktop/cocoa/adderTwo/hello.h:9: 
    error: expected '=', ',', ';', 'asm' or '__attribute__' before 'Hello'
    

    What went wrong?

  • Almas Adilbek
    Almas Adilbek over 9 years
    Thank you man!! You helped me discover similar problem which took my two crazy days.
  • Pranav Kasetti
    Pranav Kasetti about 5 years
    Now Xcode displays a more understandable suggestion Objectice-C++ Source