Rick York Ответов: 1

Использование getfileversioninfo и verqueryvalue


Я пытаюсь использовать эти две функции в своем приложении, и у меня не было ничего, кроме головной боли. Я, наконец, понял, что нужно сделать, чтобы заставить его связать. Теперь у меня есть проблема заставить его работать. Я получаю сообщение об ошибке, в котором говорится: "api-ms-win-core-version-l1-1-1.dll отсутствует на вашем компьютере..."

Кто-нибудь знает обходной путь для этого?

Что я уже пробовал:

Я провел кое-какие поиски, и да, он пропал. Это коробка W7, и ее нет на этой коробке, и ее нет на моей коробке W10. Самое неприятное в этом то, что я использовал dumpbin для перечисления импорта программы, и он говорит, что импортирует эту DLL для функций GetFileVersionInfoW и GetFileVersionInfoSizeW, но согласно документации, которую он использует "api-ms-win-core-version-l1-1-0.dll-и это действительно существует на обеих машинах.

Обновление для этого - программа теперь будет работать на коробке W10, но я не могу найти эту DLL на машине нигде - the l1-1-1.dll я имею в виду файл. Я поискал в реестре и нигде не нашел упоминания о нем.

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

Another update : I think I see what is going on now. The DLL file that exists (api-ms-win-core-version-l1-1-0.dll) exports all four of the Version functions. Incidentally, only the wide character versions, and the MBCS versions are nowhere to be found. I think what is happening is the loader finds the functions in question in the ...l1-1-0.dll so it links with them and ignores the fact that ...l1-1-1.dll is not present. Now, it seems this is how it works on W10 but it is NOT working like this in W7. I think the root of the problem is there is a bug in whatever specifies the DLL for those functions in the file mincore.lib. I would guess it is a .DEF file but I don't know.

1 Ответов

Рейтинг:
0

KarstenK

Иногда разные версии windows являются хитрыми. Находятся ли оба на фактических уровнях обновления и одинаковом "вкусе"? Интересно также и то, что ответ на stackoverflow Я так понимаю, что dll "l1-1-1" недоступна на W7. Не уверен насчет этого.

Пытаться исправьте хранилище компонентов как описано в этой статье.


Rick York

Это может быть обходной путь для этого. Я попробую это сделать. Я все еще думаю, что есть ошибка, потому что их библиотека указывает DLL, которую они не распространяют. На самом деле его нет на моей машине, но каким-то образом программа все еще загружается. Я думаю, что загрузчик W10 был изменен, чтобы вести себя иначе, чем загрузчик W7.

Rick York

Я ценю предложение Карстена, и я попробовал его. Я переориентировал EXE - файл для XP с помощью набора инструментов v1.41 XP, и теперь он даже не будет связываться. Я не могу поверить, что это сломано так сильно. До сих пор все, что я пробовал, работало с W7, но это, конечно, не так. Я придумал очень банальный обходной путь, но нахожу это очень, очень раздражающим.