错误 C3861: '_beginthreadex':未找到标识符

3

我正在尝试将一个项目从VS2008转换到VS2013,其中遇到的众多问题之一是:

c:\program files (x86)\microsoft visual studio 12.0\vc\atlmfc\include\atlbase.h(4953): error C3861: '_beginthreadex': identifier not found

我在网上搜索了解决方案,我已经在我的StdAfx.h中包含了process.h(不确定是否重要,但我将其放置在#include和#include之下,否则会收到“Windows.h”已经包含的错误)。
我正在使用共享dll的MFC,我正在使用/MDd编译,并检查了-D_MT标志是否开启。(我也没有在我的代码中使用#undef _MT。)
我该如何解决这个问题?

在VS2013中,您可以使用std::thread。 - paulm
解决方案不是很小,我真的不想改变现有代码中所有的线程。 - Shperb
3个回答

9

我找到了问题所在。在额外的包含目录中有一个不同的"process.h"文件,在将"C:\Program Files (x86)\Microsoft Visual Studio 12.0\VC\include"首先添加到额外的包含目录后,问题得到解决。


2

你需要:

#include <crtdefs.h>
#include <process.h>
将定义/取消定义_CRT_USE_WINAPI_FAMILY_DESKTOP_APP,而该宏在中包装了_beginthreadex函数。

-1

你需要包含 process.h 才能访问这个函数。

在 MFC 应用程序中,你应该使用 AfxBeginThread。


Process.h已经被包含了,虽然我在问题描述中写了,但我发现我在尖括号中写的内容没有显示出来,我已经更新了问题。 - Shperb
似乎必须定义 _CRT_USE_WINAPI_FAMILY_DESKTOP_APP。 - paulm

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接