• Apfeltalk ändert einen Teil seiner Allgemeinen Geschäftsbedingungen (AGB), das Löschen von Useraccounts betreffend.
    Näheres könnt Ihr hier nachlesen: AGB-Änderung
  • Viele hassen ihn, manche schwören auf ihn, wir aber möchten unbedingt sehen, welche Bilder Ihr vor Eurem geistigen Auge bzw. vor der Linse Eures iPhone oder iPad sehen könnt, wenn Ihr dieses Wort hört oder lest. Macht mit und beteiligt Euch an unserem Frühjahrsputz ---> 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
 

MirC23

Erdapfel
Registriert
27.07.17
Beiträge
2
Ich glaube du musst drhCmd.execute() ausführen.

Schau mal hier wird das auch gemacht.