Подтвердить что ты не робот

С++/cli DLL не работает под Win 8.1

Я написал Win32/net DLL, он отлично работает под Win XP, Win7 и 8, но под Win 8.1 он терпит неудачу.

Зависимость Уокер говорит: API-MS-WIN-CORE-KERNEL32-PRIVATE-L1-1-1.DLL не найден (user32.dll вызовет их)

Google означает, что MS изменила некоторые системные DLL в 8.1 (и проигнорировала совместимость), так что многие программы имеют одинаковую проблему.

Полный список с "file not found":

API-MS-WIN-CORE-KERNEL32-PRIVATE-L1-1-1.DLL
API-MS-WIN-CORE-PRIVATEPROFILE-L1-1-1.DLL
MSVCR120.DLL
API-MS-WIN-CORE-SHUTDOWN-L1-1-1.DLL
API-MS-WIN-SERVICE-PRIVATE-L1-1-1.DLL
EXT-MS-WIN-NTUSER-UICONTEXT-EXT-L1-1-0.DLL
IESHIMS.DLL

Есть ли у кого-нибудь идея, как это исправить?

4b9b3361

Ответ 1

Зависимость от статического анализа Уолкера не следует полагаться. Тот факт, что Dependency Walker сообщает о проблемах с этими DLL на основе его статического анализа, не означает, что это действительно ваша проблема. Это нормально для совершенно точных исполняемых файлов, которые сообщают о проблемах, которые вы описываете при статическом анализе, и все же выполняете отлично.

Сейчас я смотрю оценку зависимости моего приложения от Dependency Walker, и я вижу тот же список предположительно проблемных файлов, что и вы. Но приложение работает отлично. Проще говоря, вы смотрите на ложный позитив.

Microsoft, безусловно, не игнорировала совместимость при обновлении операционных систем. Напротив, для обеспечения хорошей совместимости он идет на необычные длины.

Если вы хотите использовать Dependency Walker для отладки проблем с родными DLL, вам действительно нужно использовать его в динамическом режиме, используя меню "Профиль". Это скажет вам, какая зависимость не загружается во время выполнения, если это действительно ваша проблема. Но в зависимости от того, где баланс между управляемым и неуправляемым, может быть, что Dependency Walker не подходит для работы.

И ваша проблема не может быть проблемой для родных зависимостей. Первым шагом является то, что вы точно определяете, в чем проблема. Это выходит за рамки этого вопроса, потому что у нас нет каких-либо подробностей об ошибках, с которыми вы сталкиваетесь.