再次遇到的问题:Unable to load dynamic library myext.so: undefined symbol

来源:互联网 发布:java定义类的关键字 编辑:程序博客网 时间:2024/05/28 16:15

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,流程都十分熟悉了,希望能对以后的开发有好处... 
原创粉丝点击