Windows上的c ++程序(g ++)。 main()无法启动

时间:2013-04-28 20:47:45

标签: c++ windows mingw freeze

我有一个由main()函数和类声明构成的c ++项目。 我正在使用mingw g ++来编译我的代码。

问题在于,即使编译和链接很好,在启动程序时,进程也会冻结并且不会显示任何内容。

这基本上是main.cpp文件:

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

我评论了类实例化以隔离问题。

在main函数之后有类Class声明。

要清楚,当从控制台运行它时,它会冻结并且不会显示printf字符串。

如果它有用,我也链接sfml库,它们在Class方法中使用。

我该如何解决这个问题?感谢。

2 个答案:

答案 0 :(得分:0)

尝试将您的班级声明置于主要功能之上。

C ++要求在使用之前声明或定义任何内容。我所知道的唯一例外是经典:

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

用于所有密集目的,在使用前无法在代码中声明。

答案 1 :(得分:0)

因为它显然不是编译/链接问题,所以它与声明的排序无关。这可能是一些事情。在没有看到Class'es定义的情况下,我们不知道它是否包含静态用户定义的类型成员,并且在CRT初始化期间调用了构造函数逻辑。它也可能是你的图书馆。如果加载了动态库(* nix下的共享对象或Windows下的DLL),则进程加载器可能无法找到和/或加载它们,或者无法解析依赖项。 SFML是动态的吗?解决此问题的最佳方法是在调试器中。给自己一个IDE并尝试在调试器中运行程序的调试版本。