Panel użytkownika
Nazwa użytkownika:
Hasło:
Nie masz jeszcze konta?

[QXmpp] Statyczne linkowanie i segmentation fault przy tworzeniu obiektu QXmppClient

Ostatnio zmodyfikowano 2015-03-24 18:18
Autor Wiadomość
Chlorek
Temat założony przez niniejszego użytkownika
[QXmpp] Statyczne linkowanie i segmentation fault przy tworzeniu obiektu QXmppClient
» 2015-01-14 14:46:25
Mam tu kilka problemów, a w tej bibliotece wciąż napotykam błędy, dlatego chciałbym już ogarnąć wszystko w jednym threadzie.

Mam projekt który wykorzystuje Qt do większości zadań, dlatego też do obsługi XMPP postanowiłem wybrać QXmpp. QXmpp jest bardzo funkcjonalne i proste w użyciu, tak więc z góry powiem, że nie chcę innej biblioteki niż ta.

Ogólnie z tą biblioteką od początku mam jakieś problemy, zaczynając od samej jej kompilacji (jak nie poda się do qmake'a opcji żeby generowało też dokumentację to nie ruszy make). Biblioteka domyślnie kompiluje się jako shared lib. Tak by nie trzeba było rozprowadzać aplikacji razem z plikami so/dll, kompilując wybrałem opcję staticlib. Wszystko się  ładnie kompiluje, mam gotowy plik libqxmpp.a i headery gotowe do użycia. W moim programie include'uje co trzeba i chcę wykorzystać najbardziej bazową część biblioteki, czyli obiekt klasy QXmppClient. Efekt jest taki, że program po pierwsze wciąż wymaga ode mnie shared library, po drugie jak już mu podam ten shared lib to wypluwa Segmentation fault - na 100% ten sigsev wychodzi z tej biblioteki (zrobiłem nowy pusty projekt i ten sam efekt).

W pliku projektu dodane mam
DEFINES += QXMPP_STATIC
LIBS += -L/usr/local/lib/ -lqxmpp

Czy coś źle zrozumiałem z instrukcji i potrzebuję jeszcze czegoś? W każdym razie linkowanie dynamiczne/statyczne nie jest dla mnie najważniejsze, jak będzie tak będzie, to tylko moja preferencja.
Większym problemem jest ten segmentation fault, który występuje bez względu na to jak kompiluję bibliotekę i linkuję ją - zarówno statycznie jak i dynamicznie.

Do biblioteki załączone są przykładowe programy, które działają bez problemu, rzuciłem na nie okiem i zauważyłem, że kompilowane są one bezpośrednio z źródłami biblioteki. Tu żaden problem się nie pojawia. Finalnie jeśli nic innego nie zadziała tak też będę musiał zrobić.

Moje zestawienie:
- Qt 5 (nie wiem jak tu zobaczyć dokładną wersję, ale pobierałem ją z miesiąc temu)
- najświeższa kopia QXmpp (kompiluję BEZ jakichkolwiek dodatków jak np. speex)
- gcc 4.7.1
- Linux Slackware 14.1 64-bit (kernel 3.10.17)
P-124895
DejaVu
» 2015-01-15 15:26:41
A nie ma potrzeby inicjalizowania tej biblioteki np. poprzez wywołanie jakiejś funkcji, która coś globalnie inicjalizuje?
P-124974
Chlorek
Temat założony przez niniejszego użytkownika
» 2015-03-24 18:18:01
Temat już stary, finalnie porzuciłem tą bibliotekę, bo okazało się, że XMPP i tak się nie przyda na dłużej. Kilka informacji dla następnych pokoleń..
W żadnym przykładowym kodzie który działa nie ma nic czego nie robiłbym w swoim programie. Ten sam kod przekopiowany w nowy projekt i zlinkowany z skompilowaną wersją biblioteki powoduje seg faulta. Próbując skompilować ze źródłami biblioteki wszystko działa, ale z jej kompilowanej wersji już nie. Pod koniec męczarni z tą libką postanowiłem wytestować ją na Windowsie i nie było problemu. W obu przypadkach wykorzystałem ten sam makefile itd., nie ma żadnych różnic, jedynie to, że na windzie korzystam z mingw32 oznaczonego tym samym numerem co GCC na Linux'ie.
P-129067
« 1 »
  Strona 1 z 1