喜悦国际村 
» 游客:  注册 | 登录 | 搜索 | 统计 | 喜悦证交所 | 帮助

RSS 订阅当前论坛  

[北京]代朋友公司招聘PHP高级程序员多名

上一主题 下一主题
     
标题: [问题] linux下php调用.so文件  
 
oop2008
注册会员
Rank: 2



UID 94937
精华 0
积分 56
帖子 42
金钱 56 喜悦币
威望 0
人脉 0
阅读权限 20
注册 2007-7-5
状态 离线
linux下php调用.so文件

我在linux下调用c++做的.so文件,c++中的函数为InitSan(),deg(char *a),调用模块中a.c代码是
PHP_FUNCTION(InitSanr)
{
        InitSan();
}
调用模块编译什么都成功了,最后dl(“a.so”)也成功,但是php文件一运行到InitSan(),php页面就一片空白,甚至跳转到无法找到页面,最后在错误日志中发现错误:
undefined symbol: InitSan
我明明php_a.h和a.c中都定义了InitSan(),为什么出错?郁闷。。。
希望知道原因或遇到过解决大老大给与技术支持啊。。。在线等
2007-7-11 01:56 PM#1
查看资料  发短消息  顶部
 
wzhu (wzhu)
版主
Rank: 7Rank: 7Rank: 7
C[A-Z]O


UID 68040
精华 0
积分 47788
帖子 1562
金钱 47765 喜悦币
威望 0
人脉 23
阅读权限 100
注册 2006-1-14
来自 湖北荆州>陕西西安>辽宁 ...
状态 离线
[推荐阅读] 如何将时间戳int类型转换成date类型呢
InitSan();在什么地方实现的?
还有你扩展中用到了其他的函数。头文件引用了没?

[ 本帖最后由 wzhu 于 2007-7-11 02:43 PM 编辑 ]




<?wzhu
wzhu.print("This is a wzhu language");
?>
2007-7-11 02:41 PM#2
查看资料  访问主页  Blog  发短消息  QQ  顶部
 
oop2008
注册会员
Rank: 2



UID 94937
精华 0
积分 56
帖子 42
金钱 56 喜悦币
威望 0
人脉 0
阅读权限 20
注册 2007-7-5
状态 离线
[推荐阅读] 问个问题.端口监听问题
InitSan();应该是在.cpp测试文件中的初始化文件,现在我把他改成php了
<?php
dl(a.so);
InitSan();
?>

扩展中用到了其他的函数
我也写进相应的调用模块的.c和.h文件中了如:
PHP_FUNCTION(InitSanr)
{
        InitSan();
}
PHP_FUNCTION(deg)
{
     char *cnet;
     char *result;
     if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "s", &cnet) == FAILURE) {
         return;
     }

     result = dge(cnet);

     RETURN_CHAR(result);
}
2007-7-11 03:21 PM#3
查看资料  发短消息  顶部
     


  可打印版本 | 推荐给朋友 | 订阅主题 | 收藏主题 | 开通个人空间  


 




Powered by Discuz! 6.1.0  © 2001-2010 Comsenz Inc.
Processed in 0.021912 second(s), 6 queries

(冀ICP备05009913号) 管理员:sadly 邮箱/MSN: sadly@phpx.com QQ:824008(长隐) 清除 Cookies - - Archiver - WAP