0

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

4

1 回答 1

0

链接器的问题。

我在可执行文件上运行了 Dependency Walker,发现运行它的 shell 没有找到 Qt5Widgets.dll 文件。这显然导致了静默链接器错误。更新环境变量时问题已解决。

故事的寓意:始终保持环境清洁、整洁和最新。Windows不像 Linux那样好,如果找不到 DLL,它不会告诉你 jack。<_<

于 2013-06-27T01:14:57.237 回答