api-ms-win-core-wow64-l1-1-1.dll в Windows 10

#windows #dll #dependencies

#Windows #dll #зависимости

Вопрос:

Я пытаюсь возродить некоторое старое программное обеспечение: оно было разработано в Windows XP, и я пытаюсь заставить его работать в Windows 10.

Однако это программное обеспечение зависит от api-ms-win-core-wow64-l1-1-1.dll , которое не взаимодействует: в зависимостях указано, что api-ms-win-core-wow64-l1-1-1.dll отсутствует импорт, в то время как в Visual Studio dumpbin указано, что у него нет зависимостей.

Я знаю, что Microsoft перенесла свою функциональность и что никто не должен напрямую ссылаться на реализации, но есть ли какой-либо способ получить api-ms-win-core-wow64-l1-1-1.dll функциональность для этого старого программного обеспечения в Windows 10? В качестве альтернативы, есть ли доступный способ переписать старые .dll s для ссылки на API-интерфейсы Win32 от Microsoft?

(Для тех, кому нужен файл: я получил, api-ms-win-core-wow64-l1-1-1.dll запустив $ locate api-ms-win-core-wow64-l1-1-1.dll на компьютере Linux с установленным на нем wine.)

Комментарии:

1. Наборы API были добавлены в Windows 7. Более того, «api-ms-win-core-wow64-l1-1-0.dll » был добавлен в Windows 8, и «api-ms-win-core-wow64-l1-1-1.dll » был добавлен в Windows 10. «DLL» набора API обычно не являются файлами, за исключением случаев, когда они предоставляются для поддержки нижнего уровня, а скорее являются записями в схеме набора API, которую использует загрузчик. Например, «api-ms-win-core-wow64-l1-1-1.dll «сопоставляется с»kernelbase.dll » в Windows 10. Старые утилиты будут искать файл, который, как они утверждают, отсутствует, но это неправильно.

2. Всякий раз, когда я пытаюсь запустить старую программу, я получаю вывод Exception in thread "main" java.lang.UnsatisfiedLinkError: C:PathToDllsMainDll.dll: Can't find dependent libraries . Если это не вызвано отсутствующей зависимостью, что это может быть?

3. Вы уже нашли решение этой проблемы? Я компилирую ffmpeg в Windows 10. но я все еще получаю эту проблему с отсутствующей DLL.

4. @ErykSun Значит ли это, что вы можете просто скопировать и переименовать kernelbase.dll в api-ms-win-core-wow64-l1-1-1.dll , чтобы соответствовать зависимости?

Ответ №1:

Я не уверен, что это напрямую решает вашу проблему. Я поддерживаю Java-приложение, которое использует JNI с некоторыми собственными библиотеками Windows. Я использовал зависимости, чтобы проверить, чего не хватает, и это оказалосьapi-ms-win-core-wow64-l1-1-1.dll (через WS2_32.dll ).

Решением для меня было установить последнюю версию VC, распространяемую из MS.

Комментарии:

1. Это не обеспечило необходимых мне зависимостей.

Ответ №2:

Получение библиотек из Wine, вероятно, не является решением, если вы хотите использовать их вне среды Linux. (Они являются оболочками и, очевидно, не используют собственные сборки Windows)

Вы можете добиться некоторого успеха, используя извлечение их с ReactOS Live CD. Однако вы должны знать, что многие из них являются зонтичными библиотеками, как описано здесь:

Библиотека umbrella представляет собой единую библиотеку статических ссылок, которая экспортирует подмножество API-интерфейсов Win32. Например, общая библиотека с именем OneCore.lib предоставляет экспорт для подмножества API-интерфейсов Win32, которые являются общими для всех устройств Windows 10.