• Wieder einmal haben uns unsere Apfeltalker tolle Fotos zur Abstimmung eingesandt. Welches ist Euer Favorit? Stimmt mit ab! Hier geht es zur Abstimmung --> Klick
  • Es ist bereits Apfeltalk-Tradition und wir möchten sie auch in diesem Jahr fortsetzen: Unser Apfeltalk-Weihnachtslogo-Wettbewerb hat begonnen! Gestaltet für uns das Weihnachtsbanner, das im Monat Dezember bis zum Weihnachtsfest unsere Webseite schmücken soll. Lasst Eurer Kreativität freien Lauf! Hier geht es zum Wettbewerb --> Klick

Mixing C++ und ObjC

iFisch

Braeburn
Registriert
30.06.12
Beiträge
46
Hallo

nach langer Zeit wollte ich mal wieder was für das iphone entwickeln.
Ich muss dazu C++ Code mit dem ObjectiveC mixen.

Das sollte kein Problem sein, alle .m files in .mm umbenennen um dem Compiler den hint für C++/Obj++ zu geben
Meine C++ Klassen ins Projekt kopiert

Und in meinem RootViewController
#include "MyCommand.h"

und in der Methode:
- (IBAction)TurnOnClicked:(id)sender {
MyCommand* drhCmd = new MyCommand(true);
drhCmd->execute();
}

getippt.

Das ganze gibt mir einen Linker Fehler:

Undefined symbols for architecture i386:
"MyCommand::execute()", referenced from:
-[DataViewController TurnOnClicked:] in DataViewController.o

"DrCommand::DrCommand(bool)", referenced from:
-[DataViewController TurnHueOnClicked:] in DataViewController.o
ld: symbol(s) not found for architecture i386

clang: error: linker command failed with exit code 1

Den Linkerfehler interpretiere ich als ein Fehlen der Implementierung meiner C++ MyCommand Methoden. Als ob das .mm File welches MyCommand implementiert nicht kompiliert wird... aber es ist natürlich im Projekt vorhanden und baut auch korrekt.

Hat jemand Erfahrung mit dem Thema und kann mir einen Tipp geben?

Vielen Dank
 
Ich glaube du musst drhCmd.execute() ausführen.

Schau mal hier wird das auch gemacht.