Objective-C++ - error: redefinition of 'class Foo'

  • Objective-C++ - error: redefinition of 'class Foo'

    Hallo,

    ich versuche momentan in einer Objective-C (Cocoa Anwendung) eine von mir geschriebene Library (entwickelt in C++) zu verwenden.

    In der Objective-C Anwendung linke ich gegen meine C++ Library - habe in der "copy header files" die Header-Dateien der Library hinterlegt.

    Die main.m Datei der Objective-C Anwendung habe ich in main.mm umbenannt und in den Optionen habe ich das Kompilieren als "Objective-C++" erzwungen.

    Dennoch bekomme ich beim Kompilieren der Objective-C Anwendung Fehler, sobald ich mir eine Instanz einer Klasse meiner C++ Library verwenden möchte.

    Objective-C Anwendung (main.mm):

    C-Quellcode

    1. #import <Cocoa/Cocoa.h>
    2. #include <iostream>
    3. #include "space.h"
    4. #include <string>
    5. #include <vector>
    6. using namespace std;
    7. int main(int argc, char *argv[])
    8. {
    9. Space space;
    10. return NSApplicationMain(argc, (const char **) argv);
    11. }
    Alles anzeigen


    Fehler:
    siehe Anhang

    Und meine point.h sieht so aus:

    C-Quellcode

    1. #ifndef _POINT_H_
    2. #define _POINT_H_
    3. #include "angle.h"
    4. #include "quadrant.h"
    5. using namespace std;
    6. class Point
    7. {
    8. public:
    9. /*!
    10. @function Point
    11. @abstract Constructs a Point Object with no predefined properties.
    12. */
    13. Point();
    14. // und so weiter..
    Alles anzeigen


    Habe mich im Internet schon zu Tode gesucht... viel gefunden - alles befolgt - vielleicht gibts hier noch einen Tipp? :)

    Danke.
    Die Objective-Cloud ist fertig wenn sie fertig ist. Beta heißt Beta.

    Objective-C und Cocoa Band 2: Fortgeschrittene
    Cocoa/Objective-C Seminare von [co coa:ding].
  • RE: Objective-C++ - error: redefinition of 'class Foo'

    Original von uin.cmkIn der Objective-C Anwendung linke ich gegen meine C++ Library - habe in der "copy header files" die Header-Dateien der Library hinterlegt. .


    Warum?

    Schau Dir mal die Detailed build results an. Das kann an allem liegen: Doppelte included, files nicht als "Objective-C++" übersetzt, etc.

    Alex
    The only thing that really worried me was the ether.
  • ja doppelt included.
    soll heißen wenn z.b. irgendwo in einem projekt zwei mal eine deklaration einer funktion vorhanden ist. das bezieht sich auch auf alles andere.
    falls zwei mal ein #include <soundso.h> gemacht wurde, ist alles was in der header steht zwei mal vorhanden, also re-deklariert.
    kiu. ivory with tiger - working since 2001