google到了这里
http://stackoverflow.com/questions/7271792/php-warning-php-startup-unable-to-load-dynamic-library-home-lib-so-so-undef 终于解决了!!!
问题是:能编译模块生成so,但php不能加载
PHP Startup: Unable to load dynamic library myext.so: undefined symbol: Z_ADDREF_P(这里是你的函数入口名) in Unknown on line 0
解决方法:在config.m4文件中加入
PHP_SUBST(MYEXT_SHARED_LIBADD)
PHP_ADD_LIBRARY_WITH_PATH(stdc++, "", MYEXT_SHARED_LIBADD)
即整个config.m4文件为编写c++扩展需要加上
PHP_REQUIRE_CXX()
PHP_SUBST(MYEXT_SHARED_LIBADD)
PHP_ADD_LIBRARY_WITH_PATH(stdc++, "", MYEXT_SHARED_LIBADD)
PHP_ADD_LIBRARY(stdc++,EXTRA_LDFLAGS)
PHP_NEW_EXTENSION(myext, myext.cpp, $ext_shared)
感谢google,感谢stackoverflow! 之前以为是低版本的php不支持c++的stl库,还跟着错误提示重写那些函数!但发现改了以后还是提示Line0错误!所以决心去找出这个问题! 做这个扩展花了我整整1个星期的时间!从windows上VC,VS的dll ,再到linux的.so,流程都十分熟悉了,希望能对以后的开发有好处...