Ich stehe hier ein seltsames Problem, ich versuche, die libkml C++ project sources in mein iOS-Projekt zu integrieren. Innerhalb des Projektes wurde unabhängig in Ordnung, aber wenn es um die Verknüpfung durch diese Codezeile kommt:Symbole nicht für Architektur gefunden i386 - Aber funktioniert für iOS-Gerät
kmldom::PointPtr appPoint = kmlconvenience::CreatePointLatLon(appLocation.coordinate.latitude, appLocation.coordinate.longitude);
I Linker Fehler erhalten Erst als ich es bin Gebäude für Simulator. Es funktioniert gut, wenn ich es für iOS-Gerät zu bauen, aber für Simulator ich die folgenden 3 Linker Fehler erhalten:
(null): "kmldom::GxTimeSpan::GxTimeSpan()", referenced from:
(null): Kmldom::KmlFactory::CreateGxTimeSpan() const in libLibKML.a(kml_factory.o)
(null): "kmldom::GxTimeStamp::GxTimeStamp()", referenced from:
(null): Kmldom::KmlFactory::CreateGxTimeStamp() const in libLibKML.a(kml_factory.o)
(null): Symbol(s) not found for architecture i386
(null): Linker command failed with exit code 1 (use -v to see invocation)
ich mit der Entwicklung für das Gerät allein in Ordnung sein könnte, aber ich bin auf der Suche dieses Problem zu beheben Problem aus 2 Gründen:
- Wäre es einfach für das Team Simulator zu Entwicklungszwecken zu verwenden.
- Ich möchte wirklich auf den Grund davon gehen und verstehen, warum das im ersten Fall passiert. Warum es für Gerät baut und für Simulator fehlschlägt, obwohl das Ziel das selbe ist und die Quelldateien, die im Ziel enthalten sind, das gleiche über Simulator sowie Gerät wären?.
Die Definition von GXTimeStamp und GXTimeSpan Klassen sind in der Datei gx_timeprimitive.h Header und dies ist der Inhalt:
#ifndef KML_DOM_GX_TIMEPRIMITIVE_H__
#define KML_DOM_GX_TIMEPRIMITIVE_H__
#include <string>
#include "kml/base/xml_namespaces.h"
#include "kml/dom/kml22.h"
#include "kml/dom/object.h"
#include "kml/dom/timeprimitive.h"
namespace kmldom {
class Serializer;
class Visitor;
// <gx:TimeSpan>
class GxTimeSpan : public TimeSpan {
public:
virtual ~GxTimeSpan();
static KmlDomType ElementType() {
return Type_GxTimeSpan;
}
virtual KmlDomType Type() const { return Type_GxTimeSpan; }
virtual bool IsA(KmlDomType type) const {
return type == Type_GxTimeSpan || TimeSpan::IsA(type);
}
// Visitor API methods, see visitor.h.
virtual void Accept(Visitor* visitor);
private:
friend class KmlFactory;
GxTimeSpan();
LIBKML_DISALLOW_EVIL_CONSTRUCTORS(GxTimeSpan);
};
// <gx:TimeStamp>
class GxTimeStamp : public TimeStamp {
public:
virtual ~GxTimeStamp();
static KmlDomType ElementType() {
return Type_GxTimeStamp;
}
virtual KmlDomType Type() const { return Type_GxTimeStamp; }
virtual bool IsA(KmlDomType type) const {
return type == Type_GxTimeStamp || TimeStamp::IsA(type);
}
// Visitor API methods, see visitor.h.
virtual void Accept(Visitor* visitor);
private:
friend class KmlFactory;
GxTimeStamp();
LIBKML_DISALLOW_EVIL_CONSTRUCTORS(GxTimeStamp);
};
} // end namespace kmldom
#endif // KML_DOM_GX_TIMEPRIMITIVE_H__
ich viele Beiträge gelesen, dass Linkerfehler auftreten Coz die Quelldateien nicht kompiliert werden . Ich habe in den gleichen Zeilen gedacht, um dieses Problem zu lösen, aber ich kann diese Header-Datei nicht in kompilierte Quellen aufnehmen, weil es eine .h-Datei ist.
Auch doppelt Ich habe - kml_factory.cc-Datei wird in den Kompilierung Quellen des inneren Projekt enthalten:
Wir freuen uns für Anregungen und Hilfe. Vielen Dank.
Welche Version von XCode verwenden Sie? –
Ich verwende 4.6.2 –