• 3824阅读
  • 1回复

将自己编译的程序添加到QPE框架,程序运行出错~ [复制链接]

上一主题 下一主题
离线huachang
 
只看楼主 倒序阅读 楼主  发表于: 2008-05-08
— 本帖被 XChinux 执行加亮操作(2008-05-08) —

各位大侠,我基于Qtopia 4.3.0编写了一套媒体播放器的应用程序,在应用程序中,调用了媒体库中间件。媒体库中间件是用C语言编写的。程序开发时,媒体库中间件通过回调函数的方式通知APP层各类消息。APP注册给中间件的回调函数是在媒体库中间件中执行的,函数内是通过给APP发送信号的方式来让APP意识媒体库中间件的各类事件的。


交叉编译后,生成的可执行程序可以正常在ARM开发板上执行。但是,将编写的媒体播放器应用程序添加到qpe框架后,通过QPE Phone版的主菜单来加载我们自己的媒体播放器应用程序,则程序无法执行,经定位后发现,在媒体库中调用应用程序提供的回调函数,该回调函数中,通过一个全局类指针访问了一个全局量,该指针指向的内存值变为0了,不是应用程序中对全局量的赋值。


如上,请问,在回调函数中通过指针访问的应用程序的全局量为什么变成0了呢?为何不用QPE的九宫格菜单,而直接起我们的程序就没问题;而通过QPE的九宫格菜单来加载我们的应用程序就有问题呢?另外,qpe框架是如何加载及管理框架下的各个应用程序的呢?


急问,谢谢~~~
离线huachang
只看该作者 1楼 发表于: 2008-05-08
哪位大侠帮忙解释一下啊?偶实在没办法了。今天晚上跟踪了一下中间件调用APP注册的回调函数的PID,发现和APP程序运行时的PID是同一个,也就是APP运行的内存空间和中间件运行的内存空间是同一个进程空间,只是各自的thread不同,那怎么还可能同一个内存地址里边的内容不一样呢?简直太奇怪了啊!
快速回复
限100 字节
 
上一个 下一个