.net 64位WPF应用程序在计算机子集上启动时自动崩溃

.net 64位WPF应用程序在计算机子集上启动时自动崩溃,.net,wpf,64-bit,.net,Wpf,64 Bit,我遇到了一个晦涩难懂的.NET(WPF)崩溃。我的应用程序是使用64位平台目标编译的,它会自动崩溃(没有对话框或任何东西),并且会在用户计算机的子集上的Windows事件查看器中记录一个事件 我的应用程序由主WPF可执行文件和类库DLL组成,它们都是为.NETFramework4客户机概要文件编译的,并且都具有64位的目标平台 奇怪的是,如果我使用任何CPU的目标平台编译WPF可执行文件,但使用64位的目标离开类库,那么应用程序会突然正常启动 堆栈跟踪如下所示: (a30.f0): Acces

我遇到了一个晦涩难懂的.NET(WPF)崩溃。我的应用程序是使用64位平台目标编译的,它会自动崩溃(没有对话框或任何东西),并且会在用户计算机的子集上的Windows事件查看器中记录一个事件

我的应用程序由主WPF可执行文件和类库DLL组成,它们都是为.NETFramework4客户机概要文件编译的,并且都具有64位的目标平台

奇怪的是,如果我使用任何CPU的目标平台编译WPF可执行文件,但使用64位的目标离开类库,那么应用程序会突然正常启动

堆栈跟踪如下所示:


(a30.f0): Access violation - code c0000005 (first/second chance not available)
ntdll!RtlPcToFileHeader+0x97:
00000000`7729ce6b 418b4350        mov     eax,dword ptr [r11+50h] ds:00000000`00000050=????????
0:000> k
  *** Stack trace for last set context - .thread/.cxr resets it
Child-SP          RetAddr           Call Site
00000000`004cefd0 000007fe`f1cecf00 ntdll!RtlPcToFileHeader+0x97
00000000`004cf050 000007fe`f1cece5d MSVCR110_CLR0400!__ExceptionPtr::_CopyException+0x8b
00000000`004cf140 000007fe`f1cec978 MSVCR110_CLR0400!__ExceptionPtr::_InitBadAllocException+0x5d
00000000`004cf1a0 000007fe`f1cf519b MSVCR110_CLR0400!IsProcessorFeaturePresent+0x1bfe
00000000`004cf1d0 000007fe`f1ced41f MSVCR110_CLR0400!initterm+0x1f
00000000`004cf200 000007fe`f1ced3bf MSVCR110_CLR0400!cinit+0x3f
00000000`004cf230 00000000`772cb0d8 MSVCR110_CLR0400!CrtEndBoot+0x65
00000000`004cf260 00000000`772b784a ntdll!LdrpRunInitializeRoutines+0x1fe
00000000`004cf430 00000000`772b7b2e ntdll!LdrpLoadDll+0x231
00000000`004cf640 000007fe`fd9b9aa9 ntdll!LdrLoadDll+0x9a
00000000`004cf6b0 000007fe`fc24b05b KERNELBASE!LoadLibraryExW+0x22e
00000000`004cf720 000007fe`fc24aee3 mscoreei!RuntimeDesc::LoadLibrary+0x193
00000000`004cf8a0 000007fe`fc242611 mscoreei!RuntimeDesc::LoadMainRuntimeModule+0x266
00000000`004cf940 000007fe`fc24b2fb mscoreei!RuntimeDesc::EnsureLoaded+0x6a
00000000`004cf9d0 000007fe`fc24b299 mscoreei!RuntimeDesc::GetProcAddressInternal+0x23
00000000`004cfa00 000007fe`fc248974 mscoreei!CLRRuntimeInfoImpl::GetProcAddress+0x61
00000000`004cfa80 000007fe`fc2474c8 mscoreei!GetCorExeMainEntrypoint+0x120
00000000`004cfb40 000007fe`fb685b21 mscoreei!CorExeMain+0x41
00000000`004cfb90 00000000`76bc652d mscoree!CorExeMain_Exported+0x57
00000000`004cfbc0 00000000`772bc521 kernel32!BaseThreadInitThunk+0xd
00000000`004cfbf0 00000000`00000000 ntdll!RtlUserThreadStart+0x1d

这对我来说显然是个大问题,因为这意味着我不能保证我的应用程序会在最终用户的计算机上运行


有没有人遇到过类似的问题,知道如何解决?我的应用程序正在加载64位DLL,我想绝对确保它没有在32位模式下运行。

您是否手动注册任何异常处理程序?看起来您的代码正在抛出std::badalloc异常,然后在试图找到异常处理程序来处理它时爆炸。据我所知,这是在我的任何代码运行之前。您能找到任何适用于此的方法吗?我也有类似的经历。这种情况只发生在几台机器上,这意味着我们在解决这个问题之前无法发货。