这是一周我试图解决我的问题,我真的需要帮助。我希望有人会发现我的设置有什么问题。
(我是法国人,所以我为任何英语错误道歉)
CONTEXT
我有一个Visual Studio项目,它是从OpenFace开发的,OpenFace是一个免费的开源库,在该地址下载:https://github.com/TadasBaltrusaitis/OpenFace。 "开发自"因为该项目只使用OpenFace的代码。我确切地说,这个项目不是由我制作的,我是从私人存储库中检出来的。
问题
我的项目构建了一个可执行文件但没有运行,在第223行的文件exe_common.inl(不知道这个文件是什么)上的非法指令停止,然后进入我的程序的入口点(cout<<&#;""<<<<<< endl在main()函数的初始化时不执行。)
这是有罪的行:
__scrt_current_native_startup_state = __scrt_native_startup_state::initialized;
此断点处的堆栈跟踪:
CamFeaturesExtractor_Affich.exe!dlib::get_global_clock(void)
CamFeaturesExtractor_Affich.exe!00007ff63493114e()
ucrtbase.dll!_initterm()
CamFeaturesExtractor_Affich.exe!__scrt_common_main_seh() line 223
kernel32.dll!BaseThreadInitThunk()
ntdll.dll!RtlUserThreadStart()
这里是确切的消息异常:
Unhandled exception at 0x00007FF63499C5B7 in CamFeaturesExtractor_Affich.exe: 0xC000001D: Illegal Instruction.
我做了什么
这个问题并没有出现在一些最近的计算机上(请查看下面我的规格)所以我的第一个猜测就是说这是一个硬件问题。英特尔Cord Duo I5(与我的计算机型号相同)不会触发异常。这是我的规格:
Edition : Windows 10 Professionel
Version : 1511
OS Version : 10586.679
Processor : Intel(R) Celeron(R) CPU 2950M @ 2.00 GHz 2.00 GHz
RAM : 4G
System type : OS 64 bits, processeur x64
如果问题来自我糟糕的处理器没有说明,是否有解决方法或我需要更换我的电脑? 如果您需要一些我忘记提供的信息,请告诉我,如果您试图帮助我,请提前感谢...
修改
代码按请求停止的反汇编部分:
00007FF6D635B5BD mov eax,0FFh
00007FF6D635B5C2 jmp __scrt_common_main_seh+167h (07FF6D635B6B3h)
_initterm(__xc_a, __xc_z);
00007FF6D635B5C7 lea rdx,[__xc_z (07FF6D639ED98h)]
00007FF6D635B5CE lea rcx,[__xc_a (07FF6D639EC10h)]
00007FF6D635B5D5 call _initterm (07FF6D635C4B0h)
__scrt_current_native_startup_state = __scrt_native_startup_state::initialized;
00007FF6D635B5DA mov dword ptr [__scrt_current_native_startup_state (07FF6D64162E0h)],2
}
else
00007FF6D635B5E4 jmp __scrt_common_main_seh+0A2h (07FF6D635B5EEh)
{
has_cctor = true;
00007FF6D635B5E6 mov sil,1
00007FF6D635B5E9 mov byte ptr [has_cctor],sil
}
__scrt_release_startup_lock(is_nested);
00007FF6D635B5EE mov cl,bl
00007FF6D635B5F0 call __scrt_release_startup_lock (07FF6D635B368h)
请注意,exe_common.inl(如注释中所述)是位于C:\ Program Files(x86)\ Microsoft Visual Studio 14.0 \ VC \ crt \ src \ vcruntime \ exe_common.inl中的只读Visual Studio文件。如果你想看到它,我做了一个要点:https://gist.github.com/AlEmerich/281994ebbcde7d3bac88f21a85de96e2
最后编辑: 我不知道这是否是正确的方法,但我通过尝试更换计算机让我知道我放弃了这个问题。我现在有一个更新的硬件,它会抛出任何错误。无论如何,谢谢你的帮助!
答案 0 :(得分:0)
对我来说,从发布模式中删除_CRT_SECURE_NO_WARNINGS
,然后尝试以发布模式进行构建。
它应该包含一些错误,修复它们,然后应该可以。