在 android 手机上用 adb 运行可执行文件的时候出现 segmentation fault ,请大神帮忙分析一下
想调用动态库文件中的函数操作手机外部设备,代码如下:
#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
请大家帮我分析一下,代码很简单,谢谢了