2011-09-02 7 views
8

In passato ho creato una libreria condivisa che ora vorrei usare all'interno di un'estensione php. è possibile farlo? Come ho visto nel file config.m4PHP_NEW_EXTENSION() chiede il .cc. Il problema è che non voglio esporre il mio codice. Voglio solo usare l'intestazione e la libreria condivisa che ho inserito in c sotto ubuntu.Per l'estensione php ho creato un: config.m4, php_c.h and php_c.cc.PHP Attenzione: avvio di PHP: libreria non valida (forse non una libreria PHP)

Please help !. THX apprezzare mi ha messo nel file di configurazione in questo modo:

libs=mylib.so; 
PHP_ADD_LIBRARY_WITH_PATH(libs, $EXTERNAL_LIB_DIR, ?? what to add here); 

ottengo il seguente:

PHP Warning: PHP Startup: Invalid library (maybe not a PHP library) '/home/foder/mylib.so'in Unknown on line 0 

php: simbolo di errore di ricerca:

/usr/php5/20090626+lfs/vehicles.so: undefined symbol: _ZN3CarC1Ei (where vehicles.so) is a php so created with: phpize, ./configure --enable-vehicle make.. 
+1

non si può semplicemente prendere un po '.so casuale e trasformarlo in un'estensione di PHP con un paio di righe di configurazione. C'è una buona dose di lavoro: http://devzone.zend.com/article/1021 –

risposta

16
PHP Warning: PHP Startup: Invalid library (maybe not a PHP library) '/home/foder/mylib.so'in Unknown on line 0 

Questo mezzo di messaggi non c'è la funzione "get_module" in ".so".
Assicurarsi che la fonte estensione PHP contiene le linee:

#ifdef HAVE_CONFIG_H 
#include "config.h" 
#endif 

e

#ifdef COMPILE_DL_MYLIB 
ZEND_GET_MODULE(mylib) 
#endif