Wie behebe ich Linkfehler, die in Objective-C ++, aber nicht in Objective-C auftreten?

Ich konvertiere meine App Delegate-Datei von .m nach .mm (Objective-C nach Objective-C ++), damit ich auf eine in Objective-C ++ geschriebene Bibliothek eines Drittanbieters zugreifen kann. In Objective-C wird mein App-Delegat problemlos erstellt und ausgeführt. Aber wenn ich die Erweiterung ändere, wird das Projekt erstellt und ich erhalte Verknüpfungsfehler, bei denen alle Symbole aus einer in C geschriebenen statischen Bibliothek fehlen, die ich verwende. Die Fehler sind klassische Linkfehler mit folgendem Format:

"MyFunction (arguments)", referenziert von:

- [MyAppDelegate myMethod] in MyAppDelegate.o

Symbol (e) nicht gefunden

Alle Probleme befinden sich im App-Delegate-Objekt. Ich weiß, dass ich bereit bin, Objective-C ++ zu kompilieren, weil meine ViewController-Datei .mm ist. Also meine Frage hat ein paar Teile.

Zunächst, gibt es diese Symbole wirklich nicht in dem Sinne, dass ich sie nicht verwenden kann? Mit anderen Worten, ist es nicht möglich, über eine Objective-C ++ - Datei auf einfache alte C-Funktionen zuzugreifen? Wenn das stimmt, ist das ziemlich unglücklich. Ich dachte, dass fast jeder Objective-C-Code und mit Sicherheit jeder Objective-C-Code, der mindestens als .mm erstellt wird, gültiges Objective-C ++ ist. Liege ich falsch

Wenn nicht, weißt du, wie ich diese Fehler verhindern kann? Gibt es in Objective-C ++ andere Headerregeln, von denen ich nichts weiß?

ielen Dank für jede Hilf

Antworten auf die Frage(4)

Ihre Antwort auf die Frage