windows (g++) 上的 c++ 程序。 main() 没有启动

Posted

技术标签:

【中文标题】windows (g++) 上的 c++ 程序。 main() 没有启动【英文标题】:c++ program on windows (g++). main() does not start 【发布时间】:2013-04-28 20:47:45 【问题描述】:

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

问题是,即使编译链接好,启动程序时,进程卡死,什么也没有。

基本上就是 main.cpp 文件:

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

....
class Class ...
....

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

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

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

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

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

【问题讨论】:

【参考方案1】:

尝试将你的类声明放在你的主函数之上。

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

int main void()

    //some code that does stuff;
    return 0;

在使用前不能在代码中声明。

【讨论】:

sry 我写了一件坏事......声明包含在主函数上方。所以这不是问题。 您能否向我们展示您的代码以获得更多帮助?问题不在于您的程序,而是存在于类本身中。【参考方案2】:

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

【讨论】:

我发现g++编译得很好,即使id有一些功能只能在linux上使用......这很奇怪,他应该有弹出和错误......这是问题吗?

以上是关于windows (g++) 上的 c++ 程序。 main() 没有启动的主要内容,如果未能解决你的问题,请参考以下文章

Windows 7 上的 C++ 内存泄漏

如何使用 WinAPI 和 C++ 从 Windows 系统上的服务通知客户端应用程序?

C++ 通用 Windows 应用程序仅在安装驱动器上的 VS2015 项目时有效

Windows 8 上的 Visual C++ 6.0

linux (g++) 上的分段错误,但 Mac OS 上没有。?

使用 gcc/g++ 使 C++ 程序在没有窗口的情况下运行? [复制]