fireblade1282
Mitglied
Hi Leute!
Wie funktioniert das mit Libraries die mit C++ erstellt wurden und C?
Eigentlich ist meine Frage ja noch allgemeiner zu verstehen, da es ja alle echten Libraries tangiert, die mit einer Objektsprache / Namespace-konzept-unterstützenden Sprache erstellt wurden...
Background: Ich habe auf einem AIX System eine .so Datei aus einem C++ Source mit xlC -G erzeugt in der nun die Funktionen liegen, die ich in einem C Projekt einbinden will (das c++ Prog hatte keine Objekte defineirt - nur einzelne Funktionen...). Das Linken der c files schlägt, sinngemäss mit ".Function not found"...
Ganz allgemein vermute ich, dass es am namespace liegt. Wenn ich in einem C++ Projekt eine Funktion Namespace1::Add und Namespace2::Add habe und exportiere die in eine shared library, müssten die doch beide dort ankommen. Ohne weitere Ahnung zu haben vermute ich, dass soetwas über prefixe gelöst wird, also dass die Einsprungstabelle des .so Files eine NS1_Add und NS2_Add oder soetwas anbieten muss.
Ganz allgemein habe ich aber eben wenig Ahnung von dieser Materie - wie verhält es sich zum Beispiel mit myObjekt->methode1()? Libraries werden vom Konzept her ja vermutlich nur Prototypen von einfachen Funktionen als Einstiegspunkt zulassen...
Kann mir hier jemand einen Tip geben, auch für Keywords zur weiteren Recherche würde ich mich freuen...!
- Andreas
Wie funktioniert das mit Libraries die mit C++ erstellt wurden und C?
Eigentlich ist meine Frage ja noch allgemeiner zu verstehen, da es ja alle echten Libraries tangiert, die mit einer Objektsprache / Namespace-konzept-unterstützenden Sprache erstellt wurden...
Background: Ich habe auf einem AIX System eine .so Datei aus einem C++ Source mit xlC -G erzeugt in der nun die Funktionen liegen, die ich in einem C Projekt einbinden will (das c++ Prog hatte keine Objekte defineirt - nur einzelne Funktionen...). Das Linken der c files schlägt, sinngemäss mit ".Function not found"...
Ganz allgemein vermute ich, dass es am namespace liegt. Wenn ich in einem C++ Projekt eine Funktion Namespace1::Add und Namespace2::Add habe und exportiere die in eine shared library, müssten die doch beide dort ankommen. Ohne weitere Ahnung zu haben vermute ich, dass soetwas über prefixe gelöst wird, also dass die Einsprungstabelle des .so Files eine NS1_Add und NS2_Add oder soetwas anbieten muss.
Ganz allgemein habe ich aber eben wenig Ahnung von dieser Materie - wie verhält es sich zum Beispiel mit myObjekt->methode1()? Libraries werden vom Konzept her ja vermutlich nur Prototypen von einfachen Funktionen als Einstiegspunkt zulassen...
Kann mir hier jemand einen Tip geben, auch für Keywords zur weiteren Recherche würde ich mich freuen...!
- Andreas