2011-09-02 113 views
8

在過去,我創建了一個共享庫,現在我想在PHP擴展中使用它。有可能這樣做嗎?正如我在config.m4文件PHP_NEW_EXTENSION()中所見,要求.cc。問題是我不想公開我的代碼。我只想使用頭文件和共享庫,我已經在ubuntu下的c中加入。對於php的擴展,我確實創建了一個:config.m4, php_c.h and php_c.cc.PHP警告:PHP啓動:無效的庫(可能不是PHP庫)

請幫忙! THX欣賞 我沒有把在配置文件中這樣的:

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

我得到如下:

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

PHP:符號查找錯誤:

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

你不能只是採取一些隨機的。所以,把它變成一個PHP擴展與配置的一對夫婦行。涉及相當多的工作:http://devzone.zend.com/article/1021 –

回答

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

此消息意味着「.so」中沒有「get_module」功能。
確保PHP擴展源包含行:

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

#ifdef COMPILE_DL_MYLIB 
ZEND_GET_MODULE(mylib) 
#endif 
相關問題