2010-11-25 9 views
2

プログラマーには常にタイトルを選んでください。とにかくQt4スタティックコンパイルと存在する前に起こっていることによる奇妙なエラー

私はLinuxを使用していると私は ./configureを-static -nomakeデモを使用してqt4.7.1のLIBSをコンパイルは例が-prefix /ローカル/ QT/qtstatic

ビルドツールを-nomakeしてインストール-nomakeすべてうまく行きました。私はQtクリエイターにそれを設定しました。任意のアプリケーションを構築するには問題ありませんが、アプリケーションを実行するとエラーになります。

のQWidget:QPaintDevice は

を中止する前にはQApplicationを作成する必要があり、私はこれは、静的オブジェクトが最初に呼び出されるのQApplicationを必要とするクラス(QPaintDevice)を使用しようとしていることを意味することを理解し、静的オブジェクトがすべてですので、私のmain()後の最初の行はQAplicationですが、違いはありません。私の.proには が含まれています。+ +静的で定義済みです。メインプログラムで静的なQt4は私を好きではありません。

どのようにして静的オブジェクトがすべてこのように狂ってしまうように修正できますか?

#include <QtGui/QApplication> 
#include "microbrowse.h" 

int main(int argc, char *argv[]) 
{ 
    QApplication a(argc, argv); 
    microbrowse w; 
    w.show(); 
    return a.exec(); 
} 

がメインですが、それはおそらく重要ではありませんmicrobrowseはあなたが取り組んでウィジェット何の名前である以外、メインは、ほとんど同じqtの作成者によって行われたすべてのQTのアプリのためです。ウィジェット・マイクロブローズはプログラム全体であり、これはQApplicationを作成し、ディメンション・マイクロブローズを作成することです。

+0

main()を投稿してもらえますか? – Live

+0

スタックにmicrobrowseを宣言していませんか? 'microbrowse * w = new microbrowse(); w-> show(); ' – Evan

+0

@Evan:あなたのコードはスタックではなくヒープ上にマイクロブラウズを作成します。しかし、ここでは問題ではありません。同じコンストラクタが同時に呼び出されます。重要なのは、マイクロブラウジングは静的ではないということです。 OPのコードは私にはうまく見える。私は問題がマイクロブラウジングの_implementation_にあると思う。 – TonyK

答えて

0

クラスmicrobrowseには、静的にリンクすることができないオブジェクトが含まれていると思います。 Qtビルドもチェックしてください。構成中に./configure -relaseまたは-debugを追加する必要があります。

関連する問題