【发布时间】:2013-06-27 00:06:21
【问题描述】:
我有以下 main.cpp 文件:
int main(int argc, char* argv[]) {
*(int*)(NULL) = 5;
delete (void*)(4);
throw int(0);
std::abort();
}
这当然会导致崩溃。在头文件的顶部添加以下魔法行:
#include <QtCore>
无论我在 main() 中施加什么滥用,程序都不会崩溃。结论:main 没有被调用。
为什么..?
我的 CMake 文件:
find_package(Qt5Widgets REQUIRED)
set(CMAKE_AUTOMOC on)
file(GLOB_RECURSE source_files *.cpp *.c)
add_executable(myexec ${source_files})
qt5_use_modules(myexec Widgets)
CMake 2.8.10 (MSVS 11 Win64)、Qt 5.0.2
【问题讨论】:
-
你可以尝试只添加“#include
”而不是 QtCore 吗? -
@VaibhavDesai 结果相同。
-
@VaibhavDesai 我收回了。那是一个过时的可执行文件。只是
#includeing QApplication 标头会导致崩溃(main 被调用)。但是,添加以下两行会导致main()未被调用:QApplication app(argc,argv);return app.exec();。据推测,链接过程中发生了一些可疑的事情,我无法弄清楚。 -
@VaibhavDesai 因此,虽然您并没有真正“添加到帖子中”,但我仍然赞成您的评论,因为它推动了我找到正确答案的方向。谢谢!