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 QtMobilty1.0でもこの問題を発見しました。彼は、複数のスレッドからのQtMobilityアクセスの問題を報告しました。問題の説明にあるように、これは、QSystemDeviceInfo/QSystemNetworkInfoが最初に作成されたときに一部の静的メンバーが作成されたことが原因である可能性があると考えてください。

Qt Mobility 1.2を使用している場合、または1つのスレッドからQSystemDeviceInfoにのみアクセスしている場合は、別の問題があります。

編集:私たちの回避策の1つは、最初にメインスレッドでQSystemDeviceInfoオブジェクトを作成したことを確認することでしたが、その後、すべてのシグナルを取得できないという問題が発生しました。

于 2011-07-29T23:35:39.290 に答える
0

機能を設定していますか?QSystemDeviceInfoには「ReadDeviceData」機能が必要です。この機能を含める場合は、デバイスにインストールするにはアプリに署名する必要があります。

于 2011-07-29T00:40:39.427 に答える