2011-09-02 27 views
8

Trong quá khứ tôi đã tạo một thư viện dùng chung mà bây giờ tôi muốn sử dụng nó bên trong phần mở rộng php. Có thể làm điều đó không? Như tôi đã thấy trong tệp config.m4PHP_NEW_EXTENSION() yêu cầu .cc. Vấn đề là tôi không muốn để lộ mã của tôi. Tôi chỉ muốn sử dụng tiêu đề và thư viện được chia sẻ mà tôi đã đọc trong c dưới ubuntu.Đối với phần mở rộng php tôi đã tạo: config.m4, php_c.h and php_c.cc.PHP Cảnh báo: Khởi động PHP: Thư viện không hợp lệ (có thể không phải là thư viện PHP)

Xin vui lòng trợ giúp !. THX đánh giá cao tôi đã đưa vào tập tin cấu hình này:

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

tôi có được những điều sau:

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

php: biểu tượng tra cứu lỗi:

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

Bạn không thể chỉ mất một .so ngẫu nhiên và biến nó thành một phần mở rộng PHP với một vài dòng config. Có rất nhiều công việc liên quan: http://devzone.zend.com/article/1021 –

Trả lời

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

Thông báo này có nghĩa là không có hàm "get_module" trong ".so".
Hãy chắc chắn rằng nguồn mở rộng PHP chứa các dòng:

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

#ifdef COMPILE_DL_MYLIB 
ZEND_GET_MODULE(mylib) 
#endif 
Các vấn đề liên quan