您的位置:首页 > 其它

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

2013-05-18 08:42 633 查看

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

 
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐