2

我在工作线程上实例化 QSystemDeviceInfo,但它会导致段错误。

int BatteryInfo::getLevel() {
   QSystemDeviceInfo sysDevInfo; //segfault happens when I step on to this line
   return sysDevInfo.batteryLevel();
}

类是线程安全的,还是问题出在其他地方?

编辑:通过进一步调试,我还注意到本机 Symbian 也会调用 segfault。

此致

4

2 回答 2

3

我和我的朋友也在 Symbian Qt Mobilty 1.0 上发现了这个问题。他报告了从多个线程访问 QtMobility的问题。正如问题描述中所说,认为这可能是由于首次创建 QSystemDeviceInfo/QSystemNetworkInfo 时创建了一些静态成员。.

如果您使用的是 Qt Mobility 1.2 或仅从一个线程访问 QSystemDeviceInfo,这是其他问题。

编辑:我们的一个解决方法是确保我们首先在主线程中创建了一个 QSystemDeviceInfo 对象,但随后我们遇到了一些问题,即没有获得所有信号。

于 2011-07-29T23:35:39.290 回答
0

你有能力设置吗?QSystemDeviceInfo 需要“ReadDeviceData”功能。如果您包含此功能,您将需要签署您的应用程序以安装在设备上。

于 2011-07-29T00:40:39.427 回答