错误 C3861:“_beginthreadex”:未找到标识符
Posted
技术标签:
【中文标题】错误 C3861:“_beginthreadex”:未找到标识符【英文标题】:error C3861: '_beginthreadex': identifier not found 【发布时间】:2014-12-01 14:13:39 【问题描述】:我正在尝试将项目从 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" 已包含错误)。
我使用 MFC 作为共享 dll,我正在使用 /MDd 进行编译并检查 -D_MT 标志是否打开。 (我也没有在我的代码中使用#undef _MT)。
我该如何解决这个问题?
【问题讨论】:
在 VS2013 中你可以使用 std::thread 代替 解决方案不小,我真的宁愿不要更改现有代码中的所有线程。 【参考方案1】:我发现了问题所在。在附加包含目录中首先添加“C:\Program Files (x86)\Microsoft Visual Studio 12.0\VC\include”后,我在附加包含目录之一中有一个不同的“process.h”文件,问题已解决。
【讨论】:
【参考方案2】:你需要:
#include <crtdefs.h>
#include <process.h>
crtdefs.h 将定义/取消定义 _beginthreadex 包含在 process.h 中的 _CRT_USE_WINAPI_FAMILY_DESKTOP_APP。
【讨论】:
【参考方案3】:您必须包含 process.h 才能访问此功能。
在 MFC 应用程序内部,您应该使用 AfxBeginThread。
【讨论】:
Process.h 已经包含在内,以为我在问题描述中写了它,但我发现我在尖括号中写的内容没有显示,我更新了问题。 看来必须定义_CRT_USE_WINAPI_FAMILY_DESKTOP_APP以上是关于错误 C3861:“_beginthreadex”:未找到标识符的主要内容,如果未能解决你的问题,请参考以下文章
小解_beginthreadex与_beginthreadex和CreateThread的区别