v120_xp 도구 세트를 사용하여 VS 2013에서 프로젝트를 빌드 할 때 LoadLibrary ("my.dll")가 올바르게 반환됩니다. 그러나 VS 2017에서 v141_xp 도구 세트 (플랫폼은 7.1 임)에서는 NULL과 오류 코드 4250을 반환합니다. 두 번 모두 깨끗한 빌드를해야했습니다.LoadLibrary가 오류 4250과 함께 실패합니다.이 작업은 응용 프로그램 컨테이너의 컨텍스트에서만 유효합니다.
LoadLibrary (F11)를 사용할 수 없습니다.
입니다 ProcessMonitor이 RegQueryValue 마이크로 소프트 \ WINDOWS \ CurrentVersion을 \ SideBySide \ PreferExternalManifest \ HKLM \ 소프트웨어를 찾을 수 없음하여 CreateFileMapping와 이름 만 독자들과 잠긴 파일을 보여줍니다 라인을 실행하지만, 그 모든 성공
DUMPBIN/헤더 후 두 버전의 my.dll에 동일
종속성 워커에는 순환 종속성, 확인되지 않은 내보내기 등의 오류가 있지만 작동하는 2013 버전에는 동일한 오류가있는 것으로 보입니다. VS 2017 my.dll에는 추가 종속성 UCRTBased.dll, vcruntime140d.dll이 있습니다.
my.dll은 부스트 1.64 & TBB에 정적으로 연결되어 있지만 둘 다 Windows 저장소 또는 범용 옵션없이 빌드되었습니다. 윈도우 10과 cmake 3.8을 사용하고 있습니다. VS 솔루션을 생성하는 cmake 파일은 변경되지 않습니다. 여기
종속성 워커 프로파일입니다 :이 프로그램은 당신이 당신의 프로그램이 전류를 변경하지 않는 경우 프로젝트 설정의 디버깅 섹션 (작업 디렉토리 생각하는 곳에서 실행LoadLibraryA("my.dll") called from "d:\myproject\x64\debug\my.EXE" at address 0x00007FF7FCED1DA2.
Loaded "d:\myproject\x64\debug\my.DLL" at address 0x00007FFA49D40000. Successfully hooked module.
Loaded "d:\myproject\x64\debug\abc.DLL" at address 0x00007FFA45190000. Successfully hooked module.
Loaded "c:\windows\system32\OLEAUT32.DLL" at address 0x00007FFA839F0000. Successfully hooked module.
Loaded "c:\windows\system32\MSVCP_WIN.DLL" at address 0x00007FFA83010000. Successfully hooked module.
Loaded "c:\windows\system32\OLE32.DLL" at address 0x00007FFA83750000. Successfully hooked module.
Loaded "d:\myproject\x64\debug\def.DLL" at address 0x00007FFA67FD0000. Successfully hooked module.
Loaded "d:\myproject\x64\debug\TBB_DEBUG.DLL" at address 0x00007FFA62BE0000. Successfully hooked module.
Unloaded "d:\myproject\x64\debug\abc.DLL" at address 0x00007FFA45190000.
Unloaded "d:\myproject\x64\debug\TBB_DEBUG.DLL" at address 0x00007FFA62BE0000.
Unloaded "c:\windows\system32\MSVCP_WIN.DLL" at address 0x00007FFA83010000.
Unloaded "c:\windows\system32\OLEAUT32.DLL" at address 0x00007FFA839F0000.
Unloaded "c:\windows\system32\OLE32.DLL" at address 0x00007FFA83750000.
Unloaded "d:\myproject\x64\debug\def.DLL" at address 0x00007FFA67FD0000.
Unloaded "d:\myproject\x64\debug\my.DLL" at address 0x00007FFA49D40000.
LoadLibraryA("my.dll") returned NULL. Error: This operation is only valid in the context of an app container (4250).
의존성 워커를 잊어 버리십시오. 시대에 따라 업데이트되지 않았으며 Windows 7에 도입 된 리팩터링 된 시스템 모듈을 완전히 해결하지 못했습니다. 결과물은 종종 오도 된 내용입니다. 대신 사용중인 코드와 오류 코드를 확인하는 방법을 보여줍니다. – IInspectable