Visual Studio 0xC000026F:Win32 x86仿真子系统中发生内部错误

lg40wkob  于 2022-11-17  发布在  其他
关注(0)|答案(3)|浏览(157)

我尝试在Parallels Desktop(Macbook Pro 14”M1 Pro)上的Visual Studio 2022 17.2.3中进行编码。程序构建成功,但在运行时出现以下异常:
Test.exe中0x00007FFE6CFD85F0(msvcp140d.dll)处出现未处理的异常:0xC000026F的数据类型:Win32 x86仿真子系统中发生内部错误。

tpgth1q7

tpgth1q71#

我不认为这是一个确定的答案,但是在对我的代码进行了大量的修剪和测试之后;(我有一个项目运行良好,另一个项目运行不好)这段代码本身就会导致上面提到的异常;

#include <iomanip>

int main()
{
    return 0;
}

我的异常(在main之前)就在这里;
cerr.cpp

#pragma warning(disable : 4074)
#pragma init_seg(compiler)
static std::_Init_locks initlocks;
vu8f3i0k

vu8f3i0k2#

将架构从64位转换到x86对我很有帮助。
x64 WinAPI仿真级别可能存在一些错误。在M1上,Parallels使用支持ARM的Windows,它使用x86-64应用程序的仿真。

e0bqpujr

e0bqpujr3#

我假设您正在构建和调试一个x64应用程序,所以这就是我在这里发布的解决方案。但是,如果您遇到同样的问题,同样的原则也适用于arm 64调试。
问题是您的路径不包括Visual C++运行时的调试x64版本。因此,系统尝试获取arm 64版本,但由于机器码是错误的体系结构而崩溃。
修复此问题的最简单方法是转到包含Visual Studio不可再分发调试库的目录(类似于C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Redist\MSVC\14.32.31326\debug_nonredist -确切路径因安装的VS版本而略有不同)。然后转到所需的特定体系结构(此处为x64),再转到该库(Microsoft.VC143.DebugCRT),然后将文件(msvcp140d.dll)复制到正在启动的应用程序所在的目录中(通常类似于bin\x64\debug -检查项目设置)。
这将允许DLL加载器首先找到x64二进制文件,并加载它。然后,您将能够调试您的应用程序。

相关问题