Xcode
gSOAP, Xcode und Linker Probleme die zweite
21/Apr/2008 18:14
Ich habe noch mal ein wenig mit den verschiedenen
Optionen von gSOAP herumgespielt und dabei folgendes
festgestellt: die Probleme die ich beim Linken des
Projektes hatte haben scheinbar nichts mit gSOAP zu
tun!
Interessanterweise tritt das Problem immer dann auf, wenn man dem Projekt zuerst die von gSOAP erzeugten Dateien, und dann die gsoap Library hinzufügt!
Macht man es umgekehrt, also erst die Libarary hinzufügen und dann die Stub Files, dann compiliert und linkt das Projekt ohne Probleme.
Eine Erklärung konnte ich für dieses Verhalten bislang nicht finden.
Interessanterweise tritt das Problem immer dann auf, wenn man dem Projekt zuerst die von gSOAP erzeugten Dateien, und dann die gsoap Library hinzufügt!
Macht man es umgekehrt, also erst die Libarary hinzufügen und dann die Stub Files, dann compiliert und linkt das Projekt ohne Probleme.
Eine Erklärung konnte ich für dieses Verhalten bislang nicht finden.
|
gSoap, XCode und Cocoa
19/Apr/2008 11:19
Da meine Versuche, funktionierende Stubs mit
WSMakeStubs zu erzeugen, fehlgeschlagen sind, habe
ich mich entschlossen es mit gSOAP zu versuchen.
Also hab ich gSOAP heruntergeladen, mit ./configure -prefix=/installdir - make - make install gSOAP compiliert und installiert.
Mit "wsdl2h -o NameDerHeaderDatei.h http://url_zur_wesdldatei.wsdl" und "soapcpp2 NameDerHeaderDatei.h" hab ich die Stub Files erzeugt und anschließend die erzeugten Dateien + stdsoap2.h und stdsoap2.cpp zu meinem Xcode Projekt hinzugefügt.
Leider hat direkt der erste Versuch das Projekt zum compilieren und zu linken fehlgeschlagen.
Der Linker hat die Meldung
"_namespaces", referenced from:
_namespaces$non_lazy_ptr in stdsoap2.o
symbol(s) not found"
ausgeworfen. Intensive Recherchen bei Google haben mich leider nicht weitergebracht.
Was letztendlich geholfen hat, war gSOAP erneut, mit dem Flag "--disable-namespaces" zu compilieren:
/configure --prefix=/installdir --disable-namespaces
make
make install
Die anschließend neu erzeugten Stub Files hab ich erneut in mein Projekt importiert, dann noch die Library libsoap++.a eingebunden (einfach mit der Maus vom Finder in die Dateiliste im XCode ziehen).
Leider gab es immer noch Probleme beim Linken des Projektes. Die Ursache war diesmal jedoch, dass die importierten Quellcodes nicht alle compiliert wurden. Ich hab sie dann von Hand zum Target hinzugefügt (wieder per Drag&Drop in den Abschnitt "Compile Sources"):
Jetzt endlich kann das Projekt erfolgreich compiliert und gelinkt werden. Auch die Verwendung der erzeugten Klassen aus den Stub Files funktioniert ohne Probleme.
Also hab ich gSOAP heruntergeladen, mit ./configure -prefix=/installdir - make - make install gSOAP compiliert und installiert.
Mit "wsdl2h -o NameDerHeaderDatei.h http://url_zur_wesdldatei.wsdl" und "soapcpp2 NameDerHeaderDatei.h" hab ich die Stub Files erzeugt und anschließend die erzeugten Dateien + stdsoap2.h und stdsoap2.cpp zu meinem Xcode Projekt hinzugefügt.
Leider hat direkt der erste Versuch das Projekt zum compilieren und zu linken fehlgeschlagen.
Der Linker hat die Meldung
"_namespaces", referenced from:
_namespaces$non_lazy_ptr in stdsoap2.o
symbol(s) not found"
ausgeworfen. Intensive Recherchen bei Google haben mich leider nicht weitergebracht.
Was letztendlich geholfen hat, war gSOAP erneut, mit dem Flag "--disable-namespaces" zu compilieren:
/configure --prefix=/installdir --disable-namespaces
make
make install
Die anschließend neu erzeugten Stub Files hab ich erneut in mein Projekt importiert, dann noch die Library libsoap++.a eingebunden (einfach mit der Maus vom Finder in die Dateiliste im XCode ziehen).
Leider gab es immer noch Probleme beim Linken des Projektes. Die Ursache war diesmal jedoch, dass die importierten Quellcodes nicht alle compiliert wurden. Ich hab sie dann von Hand zum Target hinzugefügt (wieder per Drag&Drop in den Abschnitt "Compile Sources"):
Jetzt endlich kann das Projekt erfolgreich compiliert und gelinkt werden. Auch die Verwendung der erzeugten Klassen aus den Stub Files funktioniert ohne Probleme.