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

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

转载于:https://my.oschina.net/ifeixiang/blog/339432

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值