在 android 手机上用 adb 运行可执行文件的时候出现 segmentation fault ,请大神帮忙分析一下

滴水穿石石穿水底 2014-12-05 05:08:15
想调用动态库文件中的函数操作手机外部设备,代码如下:
#include <stdio.h>
#include <dlfcn.h>
#include <stdlib.h>

int main()
{
typedef enum
{
RF_TECHNOLOGY_A,
RF_TECHNOLOGY_B,
RF_TECHNOLOGY_F,
} ph_Tech_t;

typedef enum
{
BIT_RATE_106,
BIT_RATE_212,
BIT_RATE_424,
BIT_RATE_848,
} ph_Bitrate_t;

typedef unsigned short uint16_t;
void *pHandle=NULL;
uint16_t (*pFunc1)(ph_Tech_t,ph_Bitrate_t);
pHandle = dlopen("/system/lib/hw/abord.default.so",RTLD_NOW);
pFunc1 = (uint16_t (*)(ph_Tech_t,ph_Bitrate_t))dlsym(pHandle,"phHal_PrbsTestStart");
dlerror();
printf("phHal_PrbsTestStart address %p\n",pFunc1);
pFunc1(RF_TECHNOLOGY_A,BIT_RATE_106);
printf("excellent\n");
dlclose(pHandle);
return 0;
}
其中 phHal_PrbsTestStart 的原型为 phHal_PrbsTestStart (ph_Tech_t tech, ph_Bitrate_t bitrate)
编译运行后结果如下:
./pnx
phHal_PrbsTestStart address 0xb6e9a13d
segmentation fault

请大家帮我分析一下,代码很简单,谢谢了
...全文
674 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
1cherish 2015-05-18
  • 打赏
  • 举报
回复
楼主,你好,请问你的问题解决了没,我也遇到这个问题了,可是在其他手机上运行就没有问题????
  • 打赏
  • 举报
回复
引用 2 楼 q3733353520 的回复:
断错误 一般为指针指向了不该指向的地方 所以根据打印信息看看哪个指针指向有问题,如果打印信息不够,可以自己在代码里多加几条
谢谢回复,我会自己再看看什么原因
  • 打赏
  • 举报
回复
断错误 一般为指针指向了不该指向的地方 所以根据打印信息看看哪个指针指向有问题,如果打印信息不够,可以自己在代码里多加几条
  • 打赏
  • 举报
回复
自己顶一下,盼大神降临

1,318

社区成员

发帖
与我相关
我的任务
社区描述
主要是开发驱动技术
社区管理员
  • 驱动程序开发区社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧