Mischen Von Objective-C ,(*.m , *.mm & .c /.cpp ) Dateien
In meinem Projekt Core-Bibliotheken sind Teil der C/C++ - Dateien, während UI-muss entwickelt werden, Objective C,
Ich bin in der Lage, Zugriff/Aufruf von C++ Funktionen von Objective-C/.mm-Dateien
aber reverse-kein Glück bis jetzt, d.h. ich bin nicht in der Lage, um Ziel von C-Funktionen aus C++ - Dateien,
wenn ich versuchte, Sie zu umfassen Objective-C header auch system-header -
#import <foundation/foundation.h>
immer um die 1000+ - Kompilierungsfehler,
sowas
/Developer/SDKs/MacOSX10.6.sdk/System/Library/Frameworks/Foundation.framework/Headers/NSObjCRuntime.h:180:0 /Developer/SDKs/MacOSX10.6.sdk/System/Library/Frameworks/Foundation.framework/Headers/NSObjCRuntime.h:180: error: expected unqualified-id before '@' token
/Developer/SDKs/MacOSX10.6.sdk/System/Library/Frameworks/Foundation.framework/Headers/NSObjCRuntime.h:182:0 /Developer/SDKs/MacOSX10.6.sdk/System/Library/Frameworks/Foundation.framework/Headers/NSObjCRuntime.h:182: error: expected initializer before '*' token
/Developer/SDKs/MacOSX10.6.sdk/System/Library/Frameworks/Foundation.framework/Headers/NSObjCRuntime.h:183:0 /Developer/SDKs/MacOSX10.6.sdk/System/Library/Frameworks/Foundation.framework/Headers/NSObjCRuntime.h:183: error: 'NSString' was not declared in this scope
/Developer/SDKs/MacOSX10.6.sdk/System/Library/Frameworks/Foundation.framework/Headers/NSObjCRuntime.h:183:0 /Developer/SDKs/MacOSX10.6.sdk/System/Library/Frameworks/Foundation.framework/Headers/NSObjCRuntime.h:183: error: 'aSelectorName' was not declared in this scope
Fehlen mir einige pre-compile-flag, etc..
kann mir jemand empfehlen, die beste Möglichkeit zu nennen/access objective C-Klasse, die erbt von NSObject, verändern, ohne viel C++ - code, brauche ich nur zu nennen eine Funktion
Code-Struktur /Reihenfolge zu enthalten header-Dateien sind
Some system header file
Some Core Class Header file
#import <foundation/foundation.h>
InformationsquelleAutor der Frage Amitg2k12 | 2011-01-17
Du musst angemeldet sein, um einen Kommentar abzugeben.
Wenn Sie haben ein .cpp-Datei mit C++ code zu verwenden Objective-C-als auch, entweder umbenennen .cpp-Datei zu .mm oder pass
-x objective-c++
an den compiler.InformationsquelleAutor der Antwort
Fand ich es imposible zu verwenden Objective-c in den C++ - header-Dateien.
Jedoch, Sie können Objective-c bei der Umsetzung Dateien.
(.mm oder Sie können festlegen, wie diese zu interpretieren .cpp-Dateien in der info der Datei. Wählen Sie Info->allgemein:Dateityp:Sourcecode.cpp.objcpp )
Verwenden
cppClass.h:
cppClass.mm:
in der cpp header-Dateien.
Dann der header definiert die Klasse in der .cpp oder .mm-Datei.
InformationsquelleAutor der Antwort Joris van Liempd iDeveloper
Wenn Sie Qt benutzen, es ist
Q_FORWARD_DECLARE_OBJC_CLASS
makro kann verwendet werden, um vorwärts deklarieren Sie eine Objective-C Klasse.Als Referenz, hier ist die Umsetzung:
InformationsquelleAutor der Antwort user362515
Habe ich eine Technik des namens erweitern Sie Dateien abhängig von einer Programmiersprache. Auch, fügte ich "-x objective-c ++" für den compiler, aber das problem blieb. Mir wurde geholfen, die vom Rat für die linkachten Sie auf die "file type" - parameter.
InformationsquelleAutor der Antwort alexmorhun