Использование 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.