main()似乎没有在QtCore包含上调用

时间:2013-06-27 00:06:21

标签: c++ qt cmake

我有以下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

1 个答案:

答案 0 :(得分:0)

是链接器的问题。

我在可执行文件上运行了Dependency Walker,发现我运行它的shell找不到Qt5Widgets.dll文件。这显然导致了无声的链接器错误。在更新环境变量时修复了问题。

故事的道德:始终保持您的环境清洁,整洁,以及日期。 Windows 不像Linux那样很好,如果找不到DLL,它就不会告诉你jack。 &LT; _&LT;