Linker-Fehler, der C-Function von Objective-C ++ aufruft
Ich habe ein komisches Problem mit dem linker. Ich habe code, der sieht so aus:
double given_amount = self.modelController.levelCompleteRewardAmount;
swrve_currency_given(swrve, (CFStringRef)@"currencyName", given_amount);
Ich habe diesen code an zwei verschiedenen stellen: In einem objective-c und objective-c++ - Datei. Kompiliert er fein in objective-C-land, aber die swrve_currency_given () - Funktion bewirkt, dass die folgenden in meinem WGController.mm Datei:
Undefined symbols for architecture armv7:
"swrve_currency_given(Swrve*, __CFString const*, double)", referenced from:
-[WGController giveTheUserSomeCashForPlayingThisLevel] in WGController.o
ld: symbol(s) not found for architecture armv7
collect2: ld returned 1 exit status
Ich bin mir nicht ganz sicher, ob dieser Fehler ist bezogen auf die Obj-C vs. C++ Sache, aber es fühlt wie es ist. Meine Theorie ist, dass Sie vielleicht denkt, dass es ist eine Funktion, die auf die Obj-C-Klasse? Die "swrve" - code ist mit 3rd-party-code, ein .h und .c-Datei und ich importieren, etwa so:
#import "swrve.h"
Jede Hilfe ist willkommen!
Dank
swrve
- Bibliothek sollte es sein; wenn es nicht, fügen Sie es und versuchen, kompilieren Sie erneut. InformationsquelleAutor der Frage Chris Hill | 2012-02-17
Du musst angemeldet sein, um einen Kommentar abzugeben.
Möglicherweise müssen Sie die surround-Funktion Prototyp:
Sagt der compiler, dass es eine C-Funktion und nicht eine C++ - Funktion.
InformationsquelleAutor der Antwort user1118321
Wenn Sie c-Funktion in c++ - Datei. sollten Sie verwenden
extern "c"{}
.In .h-Datei
Wenn Sie einen Hyperlink zu einer Bibliothek kompiliert wurde als C-code. verwenden
Werfen Sie einen Blick auf Bei der Verwendung von extern "C" in C++?
InformationsquelleAutor der Antwort Parag Bafna