2016-11-30 17 views
0

openSUSE 11 i586を実行する古いマシンでQtを使用するlibをインストールする必要があります。実際、私のビルドマシンはUbuntuを実行しており、私たちは独自のQtコンパイルを持っています - 静的な機能を使用するためです。明らかに、両方のマシン(ビルドとターゲット)に互換性のあるシステムがあります。同じコンパイル(異なるシステム)で異なる文字列を返すQString

QStringを除いて、すべて正常に動作します。ターゲットマシンでQStringは奇妙な文字を出力します。例えば

QTextStream out(stdout); 
QString text = "ABCDEFGHJKLNOPQRSTUWXYZ \n"; 
out << text; 

、ターゲットマシン上の結果、これを上記のコード:

ABCDEFGHEFGHSTUWXYZ

は、これを解決する任意のトリックはありますか?たぶんcharsetに関連するもの。私はどんな助けにも感謝します。

+0

ファイルのエンコードに問題がある可能性があります。 [QStringLiteralマクロ](http://doc.qt.io/qt-5/qstring.html#QStringLiteral)に文字列リテラルをラップしてみてください – MrEricSir

+0

'std :: cout << text.toStdString()'で示されているものは? – jpo38

+0

@ jpo38は同じ出力(ABCDEFGHEFGHSTUWXYZ)を示します。警告QT_MESSAESSAWARNING:ING:nowはtoStdString()の後に出力されます。 – Raiden

答えて

0

これが機能するためには、実行可能ファイルは理想的には何にも動的にリンクしていない必要があります。あなたのシステムとターゲットシステムの間のglibcまたはlibgccマジックソース間のバイナリの非互換性に直面している可能性が最も高いでしょう。​​でQtを設定する - それがうまくいくと思います。

+0

私は既にQt configureで-staticを使用しています。私のlib + exeも静的なものを使うべきですか? – Raiden

+0

'-static'と' -static-runtime'には基本的な違いがあります。 –

関連する問題