1.问题描述
exe工程依赖dll工程,Debug版本下程序运行无问题,编译release版本时,会报异常:
0x00007FF856330D2A (ntdll.dll)处(位于 jrtc_meet.exe 中)引发的异常: 0xC0000008: An invalid handle was specified。
堆栈信息:
ntdll.dll!KiRaiseUserExceptionDispatcher() 未知
ntdll.dll!RtlDeleteCriticalSection() 未知
sdk.dll!webrtc::SequenceChecker::~SequenceChecker() C++
sdk.dll!rtc::ThreadChecker::~ThreadChecker() C++
sdk.dll!webrtc::VideoTrackSource::~VideoTrackSource() C++
sdk.dll!DesktopScreenCaptureTrackSource::~DesktopScreenCaptureTrackSource() C++
sdk.dll!rtc::RefCountedObject<DesktopScreenCaptureTrackSource>::~RefCountedObject<DesktopScreenCaptureTrackSource>() 行 55 C++
[外部代码]
sdk.dll!rtc::RefCountedObject<DesktopScreenCaptureTrackSource>::Release() 行 41 C++
[内联框架] sdk.dll!rtc::scoped_refptr<webrtc::VideoTrackSourceInterface>::~scoped_refptr() 行 102 C++
sdk.dll!webrtc::VideoTrack::~VideoTrack() 行 35 C++
sdk.dll!rtc::RefCountedObject<webrtc::VideoTrack>::~RefCountedObject() 行 55 C++
sdk.dll!rtc::RefCountedObject<webrtc::VideoTrack>::Release() 行 43 C++
[内联框架] sdk.dll!rtc::scoped_refptr<webrtc::VideoTrackInterface>::operator=(webrtc::VideoTrackInterface * p) 行 125 C++
sdk.dll!webrtc::VideoTrackProxyWithInternal<webrtc::VideoTrackInterface>::DestroyInternal() 行 43 C++
sdk.dll!webrtc::internal::SynchronousMethodCall::OnMessage(rtc::Message *) 行 33 C++
sdk.dll!rtc::MessageQueue::Dispatch(rtc::Message * pmsg) 行 515 C++
sdk.dll!rtc::Thread::ProcessMessages(int cmsLoop) 行 518 C++
sdk.dll!rtc::Thread::PreRun(void * pv) 行 343 C++
2.原因
dll的release版本没有设置NDEBUG宏。