Verwenden statischer C / C ++ - Bibliotheken von iPhone ObjectiveC Apps

Ist es möglich, eine statische C-Bibliotheks-API zu haben, die C ++ intern verwendet und diese vor Benutzern der Bibliothek verbirgt?

Ich habe eine portable C ++ - Bibliothek geschrieben, die ich statisch mit einer iPhone-Anwendung verknüpfen möchte.

Ich habe ein Xcode-Projekt mit der Vorlage 'static library' von Max OS X erstellt und die Quelle kopiert. Außerdem habe ich mit (extern "C") einen C-Wapper (zur Behandlung von Ausnahmen) geschrieben.

Ich versuche, die generierte Bibliothek (.a-Datei) in einer anderen Cocoa iPhone-Anwendung zu verwenden.

Alles funktioniert gut, wenn ich (.mm) Erweiterungen für die aufrufende ObjectiveC-Datei und (.cpp) für die Implementierungsklasse in der Bibliothek verwende.

Aber ich erhalte beim Verknüpfen ungelöste Symbole, wenn ich versuche, die Wrapper-Datei in eine (.c) -Erweiterung zu ändern, obwohl alle Wrapper-Funktionsdateien nur C-Funktionen sind.

Nur weil C ++ intern in einer Bibliothek verwendet wird, bedeutet dies, dass es extern immer noch als C ++ - Programm behandelt werden muss. Gibt es nicht sowieso diese Abstraktion durchzusetzen?

Bearbeiten Danke für die Antworten,

Ich hatte externes "C" verwendet und war mir nur unsicher, welche Konfigurationen im aufrufenden Projekt benötigt wurden. dh Wenn der Aufruf projiziert würde, müsste man wissen, ob er C ++ verwendet oder ignorant sein könnte, und denken, dass es sich um eine reine C-Bibliothek handelt.

Es scheint so, als ob ich das nicht kann und ich muss (.mm) Dateien für meine ObjectiveC-Klassen verwenden.

Antworten auf die Frage(8)

Ihre Antwort auf die Frage