Windows 7, 64 бит, проблемы с DLL

235

У меня проблема с нашим исполняемым файлом. Я запускаю этот 32-разрядный исполняемый файл на С++ в 64-битном окне разработки Win-7, в котором также есть все эти приложения MS (Visual Studio 2008 + 2010, TFS, SDK, MS Office)... И все еще работает очень хорошо.

Теперь я получил клиентскую установку той же самой программы и попросил ее протестировать с чистой установкой Win-7. Таким образом, я получил 64-разрядную VM Ware Win-7 и обновил ее до Win-7 SP 1 (ту же самую версию, что и моя панель разработчиков). Но в то время как на моем ящике разработчика все в порядке, программа не работает с полем VW Ware (30 дней).

Ходок-зависимая x86 говорит мне, что отсутствуют следующие DLL:

  • API-MS-WIN-CORE-COM-L1-1-0.DLL
  • API-MS-WIN-CORE-WINRT-ERROR-L1-1-0.DLL
  • API-MS-WIN-CORE-WINRT-L1-1-0.DLL
  • API-MS-WIN-CORE-WINRT-ROBUFFER-L1-1-0.DLL
  • API-MS-WIN-CORE-WINRT-STRING-L1-1-0.DLL
  • API-MS-WIN-SHCORE-SCALING-L1-1-0.DLL
  • DCOMP.DLL
  • GPSVC.DLL
  • IESHIMS.DLL

Я искал Google для этих DLL-API-MS-WIN -... и нашел, что они действительно должны быть частью Win-7 (некоторые сайты утверждают, что они принадлежат Win-8 и Win 2012-серверу).

Я уже пробовал предлагаемые исправления, которые я нашел:

  • работает 'sfc/scannow'
  • установка исполняемых файлов исполнения Visual Studio 2008 SP1

Но это ничего не решило.: - (

Боковое примечание: у моей коробки разработки тоже нет их, и они, похоже, не нужны. Например, user32.dll в моем ящике не связывается с одним из них, в то время как установка на VM-машине делает.

Любая идея о том, как исправить эту проблему? Я попытался найти подходящую загрузку/исправление на страницах MS, но не смог.

С уважением, Томас


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

Фактически, все DLL, о которых сообщается отсутствующим инструментом зависимостей, называются тегами

* API-MS-WIN-CORE-...  

Типы DLL не были частью реальной проблемы.

В моем случае была потеряна регистрация 3 файлов OCX, и после этого все было просто отлично, но инструмент для поиска зависимостей по-прежнему отображал все те же самые DLL, что и раньше, даже когда программа просто работала нормально.

Суть его: как сказал кто-то в другом месте, этот инструмент немного устарел и не всегда работает должным образом с более новой ОС. Таким образом, держите глаза открытыми и не вводите в заблуждение, пропуская "API-MS-WIN-CORE-COM-L1-1-0.DLL",... проблема, вероятно, целиком лежит в другом месте.

  • 1
    Насколько мне известно, DirectComposition недоступен в Windows 7 (DCOMP.DLL).
  • 149
    Как насчет повторного открытия этого? Мой поиск в Google привел меня к этому вопросу всего через 20 часов после того, как он был закрыт за то, что он "вряд ли поможет будущим посетителям" ...
Показать ещё 7 комментариев
Теги:
dll

13 ответов

54

Эта проблема связана с отсутствием "распространяемого пакета" Visual Studio. Не очевидно, какой из них отсутствует в зависимости от хождения зависимостей, но я сначала попробую тот, который соответствует вашей версии компилятора, и посмотрит, все ли работает правильно:

VS 2015

VS 2013

VS 2010

VS 2008

Я столкнулся с этой проблемой, потому что я использую компиляторы VS, но не полную среду VS.

  • 0
    Смотрите также: stackoverflow.com/questions/7568697/…
  • 1
    Кроме того, похоже, что это может быть вызвано установкой распространяемых пакетов в некоторых версиях Win 7. Спасибо, m $.
Показать ещё 5 комментариев
19

Я тоже, я просто решил ту же проблему с С++ Qt5 и W7 64bits с MSCVC 2012.

В начале я думал, что это проблема с MSLC/windows dll, но, как сказал BorisP, проблема была в моих зависимостях проекта. Ключ " Как узнать зависимости проекта в Qt5?".

Поскольку я не нашел ясного способа узнать это (Dependency Wolker не очень помог мне...), я последовал за следующей "обратной процедурой", которая занимает не более 5 минут и избегает много головных болей с зависимостями Dll:

  • Скомпилируйте проект и запустите исполняемый файл в пустую папку: myproject.exe
  • Попробуйте выполнить его, он получит ошибку (отсутствующие DLL...).
  • Теперь скопируйте все dll из Qt (в моем случае они были в C:\Qt\Qt5.1.1\5.1.1\msvc2012_64_opengl\bin) в эту папку.
  • Попробуйте выполнить еще раз, он, вероятно, будет работать нормально.
  • Начать стирание постепенно и попробовать каждый раз, когда ваш исполняемый файл все еще работает, пытаясь оставить минимально необходимые библиотеки DLL.

Когда у вас есть все DLL файлы в одной папке, легче найти, какие из них недопустимы (XML, webkit... что угодно..), поэтому этот метод не занимает больше пяти минут.

  • 0
    Если отсутствующие библиотеки DLL являются сборками GAC, этот метод поможет вам определить, какие библиотеки DLL отсутствуют (в сообщениях об ошибках должно быть указано, какую сборку не удалось загрузить), а затем вам нужно будет выяснить, на какой инструментарий или инфраструктуру установить. машина, чтобы поместить их в GAC (или включить в ваш дистрибутив).
  • 0
    Смотрите также: ходок зависимости от окон
Показать ещё 4 комментария
15

Я только что решил такую ​​же проблему.

Зависимость Уокер вводит в заблуждение в этом случае и заставляет меня терять время. Итак, список "отсутствующих" DLL с первого сообщения не помогает, вы можете, возможно, проигнорировать его.

Решение состоит в том, чтобы найти ссылки на ваш проект и проверить, действительно ли они установлены на сервере.

@Ben Brammer, не важно, какие 3 файла .ocx отсутствуют, потому что они отсутствуют только для проекта Leo T Abraham. Возможно, ваш проект вызывает другие DLL.

В моем случае это не было 3 файла .ocx, но отсутствовала DLL-соединитель MySQL. После установки MySQL Connector для .Net на сервере проблема исчезла.

Итак, вкратце решение: проверьте, имеются ли все ваши ссылки на проект.

Приветствия

10

Как уже упоминалось, DCOMP является частью распространяемых VС++ (реализация среды OpenMP) и является единственным действительно отсутствующим компонентом. Все остальное - ложные отчеты.

В частности, API-MS-WIN-XXXX.DLL - это API-наборы - по существу, дополнительный уровень направленности вызовов, введенный постепенно, поскольку Windows 7. Развитие зависимостей зависимостей, казалось бы, остановилось задолго до этого, и оно не может правильно обрабатывать наборы API.

Так что не о чем беспокоиться. Вы больше ничего не пропустите.

Лучшей альтернативой для поиска нужных DLL, которые отсутствуют (если это действительно проблема), является запуск ProcessMonitor и откат от отказа, поиск последовательностей неудавшихся зондов для определенной DLL на всем пути к системе.

  • 0
    +1 для ProcessMonitor. Это бесплатная загрузка от Microsoft. Присоединитесь к процессу Matlab, и вы сможете увидеть все, что происходит, включая dll-load
6

Я также столкнулся с этой проблемой, но решение, которое, кажется, является общим потоком здесь, и я видел в другом месте в Интернете, это "[установить] распространяемый пакет". Однако для меня это не работает, так как проблема возникла при запуске установщика для нашего продукта (который устанавливает распространяемый пакет), чтобы проверить наши блестящие новые сборки VS 2015.

Проблема возникла из-за того, что перечисленные DLL не находятся на пути установки Visual Studio (например, C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\redist) и, таким образом, не были добавлены в установку. Эти api-ms-win- * dll устанавливаются на установочный путь Windows 10 SDK как часть установки Visual Studio 2015 (например, C:\Program Files (x86)\Windows Kits\10\Redist). Установка на Windows 10 работала нормально, но установка на Windows 7 требовала добавления этих библиотек в нашу установку продукта. Для получения дополнительной информации см. https://support.microsoft.com/en-us/kb/2999226, который описывает добавление этих зависимостей, вызванных VS 2015, и обеспечивает загрузку для различных Платформы Windows; также см. https://blogs.msdn.microsoft.com/vcblog/2015/03/03/introducing-the-universal-crt/, который описывает редизайн библиотек CRT. Особый интерес представляет пункт 6 раздела Распространяющее программное обеспечение, использующее Universal CRT:

Обновлено 11 сентября 2015 г. Поддерживается локальное развертывание Universal CRT. Чтобы получить двоичные файлы для локального развертывания приложений, установите пакет разработки программного обеспечения для Windows (SDK) для Windows 10. Бинарные файлы будут установлены в C:\Program Files (x86)\Windows Kits\10\Redist\ucrt. Вам нужно будет скопировать все DLL файлы с вашим приложением (обратите внимание, что набор DLL файлов необходим для разных версий Windows, поэтому вы должны включить все библиотеки DLL, чтобы ваша программа запускалась во всех поддерживаемых версиях Windows).

4

Этот вклад на самом деле не отвечает на начальный вопрос, но с учетом скорости потока этого потока я предполагаю, что существует немало людей, которые сталкиваются с проблемой, что библиотеки API-MS-WIN-CORE- не могут быть найдены,

Мне удалось решить проблему, когда мое приложение отказалось начинать с сообщения об ошибке, что API-MS-WIN-CORE-WINRT-STRING-L1-1-0.DLL не найден простым обновлением Visual Studio.

Я не думаю, что моя среда сборки (Win7 Pro SP1, Visual Studio Ultimate 2012) была полностью испорчена, она отлично работала для большинства моих проектов. Но при некоторых особых обстоятельствах я получил сообщение об ошибке (см. Ниже).

После обновление Visual Studio 11 из исходной версии CD (я забыл посмотреть номер версии) до версии 11.0.61030.00 Update 4 также сломанный проект снова запущен.

Надеюсь, это помогло кому-то!

Изображение 7291

4

Это решило проблему для меня.
Удалите распространяемый пакет VS 2010, если вы его уже установили, затем установите Microsoft Windows 7 SDK

  • 1
    Замечания по установке предлагают вам удалить распространяемые пакеты, так как они содержат избыточные версии вышеуказанных библиотек DLL, что приведет к путанице в динамическом компоновке кода и других форм Win7 herp-derp. Почему это не будет делать для вас во время установки, мы можем смело подать как #iwishihadarealpackagemanager.
  • 1
    работал для меня тоже. так много часов было потрачено на него, включая .net directx, но переустановка msvc ++ работала
3

Я решил проблему. Когда я зарегистрировал файлы OCX, я запустил его с помощью командного окна, которое было выполнено как администратор.

2

У меня была та же проблема. После нескольких часов поиска в Интернете я нашел решение для меня. Я поместил файл: combase.dll(C:\windows\system32) вместе в папку reales и разрешил.

  • 0
    Не работает для меня
  • 0
    Установка случайных DLL на вашем пути - ПЛОХАЯ ИДЕЯ.
1

Я пришел сюда с этой проблемой, попробовав новую установку Windows 7 OEM, обновив ее до Windows 10.

После некоторого поиска на форумах в Microsoft и я нашел следующее решение, которое сработало для меня:

Замените C:\Windows10Upgrade\wimgapi.dll на один из C:\Windows\System32\wimgapi.dll

  • 0
    Установка случайных DLL на вашем пути - ПЛОХАЯ ИДЕЯ.
  • 0
    Конечно, но когда новая установка, что тут сломать? : D
1

для любого, кто пришел сюда, но с проблемой фотошопа: мое решение состояло в том, чтобы удалить ms vc++ распространяемый первый x86 и 64 оба. Затем установите один appriopriate на версию и архитектуру Windows (86 или 64).

1

Установка MSSQL Management Studio 2014 на недавно установленную Windows 7 разрешила эту проблему у нашего клиента после двухдневной нелепой битвы.

  • 3
    существует много других ответов, и, возможно, будет лучше в качестве комментария
0

Предложите также проверить, сколько памяти используется в настоящее время. Оказывается, что невозможность найти эти библиотеки была первым симптомом, проявленным при попытке запуска программы (запуска или отладки) в Visual Studio. После более чем получаса с большим количеством царапин на голове, поиска в Интернете, запуска procmon и диспетчера задач, и, в зависимости от этого, совершенно другая программа, которая была запущена с самого начала, сообщила, что "память низкая, попробуйте остановить некоторые программы" или некоторые например. Убийство Firefox, Thunderbird, procmon, зависит, все работает снова.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню