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

komunikacja php < = > cpp za pomocą phpCpp

Ostatnio zmodyfikowano 2014-05-09 12:35
Autor Wiadomość
roserek
Temat założony przez niniejszego użytkownika
komunikacja php < = > cpp za pomocą phpCpp
» 2014-05-07 17:18:39
Witam. Pracuję obecnie nad komunikacją między php a cpp, używam do tego biblioteki phpCpp. Natknąłem się jednak na jeden problem. Do programu w Cpp dodałem kolejkowanie za pomocą RabbitMq który używa AMQP. No i tutaj zaczęły się schodki.

C/C++
try {
   
    AMQP amqp;
   
    AMQPExchange * ex = amqp.createExchange( "e" );
    ex->Declare( "e", "fanout" );
   
    AMQPQueue * qu2 = amqp.createQueue( "q2" );
    qu2->Declare();
    qu2->Bind( "e", "" );
   
    ex->setHeader( "Delivery-mode", 2 );
    ex->setHeader( "Content-type", "text/text" );
    ex->setHeader( "Content-encoding", "UTF-8" );
   
    ex->Publish( order.str(), "" );
   
    result[ 0 ] = true;
    result[ 1 ] = "Zdjecie dodane do kolejki.";
    return result;
   
} catch( AMQPException e ) {
    result[ 0 ] = false;
    result[ 1 ] = e.getMessage();
    return result;
}

Po dopisaniu powyższego kodu dostaję takie info od php:
PHP Warning:  PHP Startup: Unable to load dynamic library '/usr/lib/php5/20100525/face.so' - /usr/lib/php5/20100525/face.so: undefined symbol: _ZN13AMQPException10getMessageEv in Unknown on line 0
P-109436
Adik80
» 2014-05-07 18:20:49
linkujesz z -lrabbitmq ? librabbitmq.so jest w /usr/lib lub odpowiednio ustawiles LD_LIBRARY_PATH?
P-109439
roserek
Temat założony przez niniejszego użytkownika
» 2014-05-07 20:39:39
Dzieki za odp. Oczywiście linkuję z -lrabbitmq , inaczej chyba by mi sie nie skompilowało. Co do drugiego pytania to wygląda u mnie tak:

vagrant@packer-virtualbox:~$ sudo find / -name librabbitmq.so
/usr/local/lib/x86_64-linux-gnu/librabbitmq.so
vagrant@packer-virtualbox:~$ echo $LD_LIBRARY_PATH

vagrant@packer-virtualbox:~$
P-109442
Adik80
» 2014-05-08 12:19:00
Moze sporbuj ustawic LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/lib/x86_64-linux-gnu/

Co wyswietla: ldd /usr/lib/php5/20100525/face.so ?
P-109489
roserek
Temat założony przez niniejszego użytkownika
» 2014-05-08 21:05:58
Nie wklejam wszystkiego bo sporo tego ;) Jest jedna linijka powiązana z biblioteką rabbita:

librabbitmq.so.1 => /usr/lib/librabbitmq.so.1 (0x00007ff09bf01000)
P-109524
Adik80
» 2014-05-08 21:48:30
Czyli szuka w /usr/lib a jest /usr/local/x86_64-linux-gnu ?

Moze sprobuj:
sudo ln -s /usr/local/lib/x86_64-linux-gnu/librabbitmq.so.1 /usr/lib/librabbitmq.so.1
P-109528
roserek
Temat założony przez niniejszego użytkownika
» 2014-05-09 09:56:34
Nie no w usr/local/lib/x86... jest plik librabbitmq.so natomiast w usr/lib/ jest librabbitmq.so.1

Przeniosłem też ten plik librabbitmq.so do usr/lib ale nie pomogło :(. Dalej jest sam problem ...
Zastanawiam się tylko czy to chodzi w ogóle o tą bibliotekę czy może o libamqpcpp.a ? Z tym że ten plik ja wygenerowałem i jest on używany podczas kompilacji.
P-109549
Adik80
» 2014-05-09 12:35:55
Najprosciej sprawdzic gdzie jest ten symbol: "nm libXXX |grep AMPQException" Jesli to jest rabbitmq to nie znajduje biblioteki jesli ampqcpp to moze gdzies jest nie zlinkowane. Mozesz wkleic fragment Makefile z linkowaniem?
P-109555
« 1 »
  Strona 1 z 1