2013-01-01 18 views
22

Zastanawiam się, czy ktoś może mi pomóc z problemem, który czyni mnie wyciągnąć to, co pozostało z moich włosów ...Próbując zbudować rozszerzenie PHP PDO dla Rocket U2

Obecnie pracuję nad projektem, który wymaga mnie rozmawiać z bazą danych Unidata. PHP nie ma natywnego sterownika, aby uzyskać dostęp do tego typu bazy danych, jednak po pewnym Googlingu znalazłem:

https://u2devzone.rocketsoftware.com/accelerate/articles/u2-pdo-driver/u2-pdo-driver.

mam nagłówek U2 InterCall i bibliotekę i myślę, że jestem w tym ich poprawnie. Jednak rozszerzenie kompiluje ale nie przechodzi testy w nim błędy się z

pdo_u2.so: undefined symbol: ic_universe_session in Unknown on line 0 

co sugeruje mi, że nie jest powiązany w stosunku do biblioteki. Kiedy edytować makefile i określenie przez strony, że biblioteka powinna być włączona, to błędy na zewnątrz z

relocation R_X86_64_32 against `.rodata.str1.1' can not be used when making a shared object; recompile with -fPIC 
/home/kaigoh/Downloads/intcall/lib/libuvic.a: could not read symbols: Bad value 
collect2: error: ld returned 1 exit status 
make: *** [pdo_u2.la] Error 1 

Próbowałem zmuszając -fPIC przełącznik w makefile, ale pojawia się ten sam błąd.

ja po prostu nie wiem wystarczająco dużo o kompilacji niestandardowych rozszerzeń PHP, aby pomóc sobie i mam nadzieję, że nie jest guru tutaj kto może mi punkt w dobrym kierunku!

UPDATE: To kompiluje doskonale przy użyciu 32-bitowego zainstalować Linuksa, więc nie wiem, dlaczego się niepowodzeniem z 64-bitową zainstalować ...

+1

Jest to prawdopodobnie dlatego, że składniki U2 InterCall są 32bit kompiluje, więc nie można użyć go do 64-bit. Jeśli masz aktywną umowę wsparcia, sprzedawca pomocy technicznej może ci pomóc. –

+0

Z dostarczonych komunikatów o błędach również wygląda na to, że sądzisz, że próbujesz połączyć się z UniVerse, jednak stwierdziłeś, że chcesz się połączyć z UniData, więc musisz upewnić się, że ustawienia połączenia są poprawne dla UniData. Podejrzewam jednak, że komentarz Dana jest głównym powodem. –

+0

@kaigoh: Następnym razem, gdy przejdziesz online, zapoznaj się z pytaniem tutaj i dodaj dodatkowe informacje o tym, co się wydarzyło od tego czasu. Zapoznaj się także z komentarzami i odpowiedziami i podaj dla nich swoją opinię. Dziękuję Ci. – hakre

Odpowiedz

2

Wiem, że zadałem to pytanie dawno temu, ale ostatecznym rozwiązaniem, które wymyśliłem, było napisanie pakietu oprogramowania pośredniego w języku C# z bibliotekami .Net firmy Rocket wraz z niektórymi klasami PHP, które mogą czytać i przetwarzać dane z UniData.

Jeśli ktoś jest zainteresowany bardziej szczegółowo w jaki sposób uzyskać UniData z PHP, prosimy napisz do mnie wiersz.

+0

Chciałbym usłyszeć więcej o tym, jak to osiągnąłeś. Proszę napisz do mnie na mike.roosa pod adresem gmail, jeśli nie masz nic przeciwko. –

1

lib/libuvic.a musi być ponownie skompilowana z flagą -fPIC , nie tylko kod, który próbuje się do niego linkować. Nie mogę stwierdzić z próbek wyjściowych, czy skompilowałeś bibliotekę również z -fPIC, czy też nie.