2

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

问题是,即使编译和链接良好,在启动程序时,进程冻结并且什么也没有显示。

这基本上是 main.cpp 文件:

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

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

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

需要明确的是,从控制台运行它时,它会冻结并且不显示 printf 字符串。

如果它有用的话,我还会链接 sfml 库,这些库在 Class 方法中使用。

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

4

2 回答 2

0

尝试将您的类声明放在您的主要功能之上。

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

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

出于所有密集目的,在使用前不能在代码中声明。

于 2013-04-28T20:53:13.607 回答
0

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

于 2013-04-28T21:37:39.177 回答