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() 没有启动的主要内容,如果未能解决你的问题,请参考以下文章
如何使用 WinAPI 和 C++ 从 Windows 系统上的服务通知客户端应用程序?
C++ 通用 Windows 应用程序仅在安装驱动器上的 VS2015 项目时有效