我在VC ++ 2010中有一个C ++项目,我在没有预编译头文件的情况下启动它。它工作正常,但当我添加MFC多线程时,它开始在afxmt.h中提供异常。当我在另一个带有预编译头文件的项目中测试包含afxmt.h时,它没有任何问题。
问题是,如何让MFC(afxmt.h)处理没有预编译头的项目?或者我应该将其更改为预编译头文件?
编辑:
以下是例外情况:
First-chance exception at 0x789394ea (mfc100ud.dll) in Quick_Test.exe: 0xC0000005: Access violation reading location 0x00000000.
Unhandled exception at 0x77b015de in Quick_Test.exe: 0xC0000005: Access violation reading location 0x00000000.
这些都发生在空项目中(没有预编译的头文件)。 代码是:
#include "afxmt.h"
答案 0 :(得分:1)
使用预编译头的项目会自动插入#include afxmt.h;进入每个源文件的编译过程。如果您没有使用预编译头文件,则需要将#include添加到每个执行需要该头文件的源文件中。
答案 1 :(得分:1)
默认情况下,预编译头文件是stadfx.h,其中包含其他几个包含。如果不使用预编译头,则需要手动包含包含代码中使用的所有函数声明的文件。