Это приложение должно работать в Windows 7, поэтому оно определяет «#define _WIN32_WINNT _WIN32_WINNT_WIN7
». PathAllocCanonicalize
- Windows 8 [desktop apps only]
, но сборка работает, поэтому неожиданность появляется позже во время выполнения на Win7: приложение не может запускаться, потому что отсутствует «api-ms-win-core-path-l1-1-0.dll». Заголовок, Pathcch.h, определяет что-то:Разрыв сборки для несовместимых версий Windows: функции Pathcch.h
/* APISET_NAME: api-ms-win-core-path-l1 */
#ifndef _APISET_PATH_VER
#ifdef _APISET_MINCORE_VERSION
#if _APISET_MINCORE_VERSION >= 0x0100
#define _APISET_PATH_VER 0x0100
#endif
#endif
#endif
Его можно использовать ... как-то? Или, если это оболочка, могу ли я установить что-то в Windows 7 за то, что она работает?
РЕДАКТИРОВАТЬPathAllocCanonicalize
в Pathcch.h
, который игнорирует _WIN32_WINNT
.
Связанный: http://stackoverflow.com/questions/24131602/how-to-load-pathcchcanonicalizeex-at-run-time – Liviu
Запустите 'dumpbin/import' на скомпилированном двоичном файле. Я был бы готов поспорить, что библиотека связана. Если это так, вам нужно вытащить ссылку во время выполнения, используя 'LoadLibrary' и' GetProcAddress' – theB
. Что мне интересно, если сборка может быть нарушена, поэтому я может обнаружить раннюю проблему вроде этого. Это намерение '_WIN32_WINNT', так почему же нет функций' Pathcch.h'? – Liviu