我有以下main.cpp文件:
int main(int argc, char* argv[]) {
*(int*)(NULL) = 5;
delete (void*)(4);
throw int(0);
std::abort();
}
这当然会导致崩溃。将以下魔术行添加到头文件的顶部:
#include <QtCore>
无论我在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
答案 0 :(得分:0)
是链接器的问题。
我在可执行文件上运行了Dependency Walker,发现我运行它的shell找不到Qt5Widgets.dll文件。这显然导致了无声的链接器错误。在更新环境变量时修复了问题。
故事的道德:始终保持您的环境清洁,整洁,以及日期。 Windows 不像Linux那样很好,如果找不到DLL,它就不会告诉你jack。 &LT; _&LT;