我有一个由main()函数和类声明构成的c ++项目。 我正在使用mingw g ++来编译我的代码。
问题在于,即使编译和链接很好,在启动程序时,进程也会冻结并且不会显示任何内容。
这基本上是main.cpp文件:
int main() {
printf("....\n");
system("PAUSE");
//Class instance;
return 1;
}
....
class Class {...}
....
我评论了类实例化以隔离问题。
在main函数之后有类Class声明。
要清楚,当从控制台运行它时,它会冻结并且不会显示printf字符串。
如果它有用,我也链接sfml库,它们在Class方法中使用。
我该如何解决这个问题?感谢。
答案 0 :(得分:0)
尝试将您的班级声明置于主要功能之上。
C ++要求在使用之前声明或定义任何内容。我所知道的唯一例外是经典:
int main void()
{
//some code that does stuff;
return 0;
}
用于所有密集目的,在使用前无法在代码中声明。
答案 1 :(得分:0)
因为它显然不是编译/链接问题,所以它与声明的排序无关。这可能是一些事情。在没有看到Class'es定义的情况下,我们不知道它是否包含静态用户定义的类型成员,并且在CRT初始化期间调用了构造函数逻辑。它也可能是你的图书馆。如果加载了动态库(* nix下的共享对象或Windows下的DLL),则进程加载器可能无法找到和/或加载它们,或者无法解析依赖项。 SFML是动态的吗?解决此问题的最佳方法是在调试器中。给自己一个IDE并尝试在调试器中运行程序的调试版本。