2

main() 関数とクラス宣言で形成された C++ プロジェクトがあります。コードをコンパイルするために mingw g++ を使用しています。

問題は、コンパイルとリンクがうまく行っていても、プログラムを起動すると、プロセスがフリーズして何も表示されないことです。

これは基本的に main.cpp ファイルです。

int main() {
    printf("....\n");
    system("PAUSE");
    //Class instance;
    return 1;
}
....
class Class {...}
....

問題を切り分けるために、クラスのインスタンス化にコメントしました。

main 関数の後にクラス Class 宣言があります。

明確にするために、コンソールから実行すると、フリーズしてprintf文字列が表示されません。

役に立つ場合は、Class メソッドで使用される sfml ライブラリもリンクしています。

どうすれば問題を解決できますか? ありがとう。

4

2 に答える 2

0

これは明らかにコンパイル/リンクの問題ではないため、宣言の順序とは関係ありません。それはいくつかのことかもしれません。クラスの定義を見なければ、CRT の初期化中に呼び出されたコンストラクター ロジックを持つ静的なユーザー定義型メンバーが含まれているかどうかはわかりません。また、ライブラリである可能性もあります。動的ライブラリ (*nix での共有オブジェクト、または Windows での DLL) をロードした場合、プロセス ローダーはそれらを見つけてロードしたり、依存関係を解決したりできない場合があります。SFML は動的ですか? これをトラブルシューティングする最善の方法は、デバッガーを使用することです。IDE を入手して、デバッガーでプログラムのデバッグ ビルドを実行してみてください。

于 2013-04-28T21:37:39.177 に答える
0

クラス宣言をメイン関数の上に置いてみてください。

C++ では、使用する前に何かを宣言または定義する必要があります。私が知っている唯一の例外はクラシックです:

int main void()
{
    //some code that does stuff;
    return 0;
}

すべての集中的な目的のために、使用前にコードで宣言することはできません。

于 2013-04-28T20:53:13.607 に答える