我在工作线程上实例化QSystemDeviceInfo,但它会导致段错误。
int BatteryInfo::getLevel() {
QSystemDeviceInfo sysDevInfo; //segfault happens when I step on to this line
return sysDevInfo.batteryLevel();
}
该类是线程安全的,还是问题出在其他地方?
编辑:通过进一步调试,我也注意到原生Symbian也调用了段错误。
祝你好运
答案 0 :(得分:3)
我和我的朋友在Symbian Qt Mobilty 1.0上也发现了这个问题。他报告了一个问题QtMobility access from multiple threads。正如它在问题描述中所说的那样认为这可能是因为第一次创建QSystemDeviceInfo / QSystemNetworkInfo时会创建一些静态成员。。
如果您正在使用Qt Mobility 1.2或仅从一个线程访问QSystemDeviceInfo,则还有其他问题。
编辑:我们的一个解决方法是确保我们首先在主线程中创建了一个QSystemDeviceInfo对象,但后来我们遇到了一些没有获取所有信号的问题。
答案 1 :(得分:0)
你有能力设定吗? QSystemDeviceInfo需要'ReadDeviceData'功能。如果包含此功能,您需要在设备上签名以安装。