LINUX.ORG.RU

Не видит DLL в той же директории

 


0

1

Запускаю консольную программу под WINE — ругается, что не может найти MSVCR120.dll, которая лежит в той же директории. ОС — Ubuntu, версия WINE — 1.6.2.

$ wine getspec.exe
err:module:import_dll Loading library MSVCR120.dll (which is needed by L"Z:\\home\\powtest\\abserv\\zlib.dll") failed (error c000007b).
err:module:import_dll Library zlib.dll (which is needed by L"Z:\\home\\powtest\\abserv\\hdf5.dll") not found
err:module:import_dll Loading library MSVCR120.dll (which is needed by L"Z:\\home\\powtest\\abserv\\hdf5.dll") failed (error c000007b).
Exception EOSError in module getspec.exe at 000000000003E467.
System Error.  Code: 126.
Module not found.

В чём может быть дело?

Заранее спасибо.

Ответ: Возникла путаница из-за того, что на одной Убунте всё работает, на остальных — нет. Убунта, где всё работало, при внимательном рассмотрении оказалась Дебианом с Wine 1.8. В итоге пришлось ставить новый Вайн на все машины.

★★★

Последнее исправление: olegd (всего исправлений: 1)
Ответ на: комментарий от anonymous

https://wiki.winehq.org/Wine_User's_Guide#Libraries_Settings

Там пишут:

DLLs usually get loaded in the following order:
1. The directory the program was started from.

DLL там лежит, но её не находит. Куда копать?

2. The current directory.

Она же является текущей.

3. The Windows system directory.

Пробовал класть в $WINEPREFIX/drive_c/windows/system32/ Не помогло.

olegd ★★★
() автор топика
Последнее исправление: olegd (всего исправлений: 1)
Ответ на: комментарий от olegd

А ты всё равно библиотеку в настройки пропиши.

anonymous
()

Найди в интернете MSVCR120.dll, положи рядом с exe и в той же папке где hdf5.dll. winecfg, сделай MSVCR120.dll нативным.

xDShot ★★★★★
()

Советую сделать так.

  1. Выключи все программы, использующие Wine. Для гарантии, выполни после этого: wineserver -killall Потому что, например, 2ГИС очень любит оставить запущенным фоновый процесс 2GISTrayNotifier.exe, причём ни значка в трее, ни уведомлений о доступных обновлениях от него не слышно
  2. Переименую директорию .wine.Или, как вариант, скопируй в другое место (вдруг у тебя в /home остался всего гигабайт, или меньше?)
    // Все файлы (и директории), начинающиеся с точки, являются скрытыми (это вместо атрибута файла, как в Windows). Увидеть их можно или при помощи команды ls в командной строке, или в файловом менеджере «Вид → Показывать скрытые файлы и каталоги».
  3. Установи новый Wine. Например 3.0 или 2.0.2.
  4. Попробуй с ним. Возможно, что builtin-реализация MSVCR120.dll уже достаточно много умеет, чтобы запустить твой софт.
    // Для справки: builtin - это когда программисты Wine воссоздают библиотеку, представляющую из себя закрытый исходный код, в открытом коде. Пользуясь при этом официальной спецификацией на библиотеки (которая, как ни странно, есть. Но иногда или не полная, или есть недокументированные функции), а также инженерным анализом
  5. Если не получилось, попробуй native-библиотеку. Так же положить в ту же директорию, что и программа, или в SYSTEM32, или winetricks vcrun2013, как тебе посоветовали выше
  6. Если ничего не получилось - возвращай старый Wine, удаляй новый WINEPREFIX, и возвращай старый.
anonymous
()

А каталог, откуда запускается файл, входит в список, обрабатываемых Wine? Если нет, то он не увидит текущего каталога.

sanwashere ★★
()

В winecfg во вкладке «Библиотеки» добавь свою библиотеку в режиме «Сторонняя -> встроенная», либо просто «Сторонняя»

SR_team ★★★★★
()
Ответ на: комментарий от xDShot

Найди в интернете MSVCR120.dll, положи рядом с exe и в той же папке где hdf5.dll. winecfg, сделай MSVCR120.dll нативным.

Квинтэссенция Windows-Way.

EXL ★★★★★
()
Ответ на: комментарий от SR_team

В winecfg во вкладке «Библиотеки» добавь свою библиотеку в режиме «Сторонняя -> встроенная», либо просто «Сторонняя»

Как это сделать без иксов? (Про winetricks знаю.)

olegd ★★★
() автор топика
Последнее исправление: olegd (всего исправлений: 1)
Ответ на: комментарий от sanwashere

А каталог, откуда запускается файл, входит в список, обрабатываемых Wine? Если нет, то он не увидит текущего каталога.

Z: указывает на корень файловой системы — «/» . Все разрешения есть. Или я не понял вопрос?

olegd ★★★
() автор топика
Ответ на: комментарий от anonymous

Зачем такой старый вайн?

По умолчанию.

В новом эта библиотека есть.

В этой версии тоже есть, вроде.

olegd ★★★
() автор топика
Ответ на: комментарий от xDShot

Найди в интернете MSVCR120.dll

MSVCR120.dll идёт в комплекте с программой.

положи рядом с exe и в той же папке где hdf5.dll.

Уже.

winecfg, сделай MSVCR120.dll нативным.

Как это сделять без GUI?

olegd ★★★
() автор топика
Ответ на: комментарий от meliafaro

Попробуй на всякий wine64 regsvr32 your-dll-name.

$ wine64 regsvr32 MSVCP120.dll
Application tried to create a window, but no driver could be loaded.
Make sure that your X server is running and that $DISPLAY is set correctly.
err:systray:initialize_systray Could not create tray window
err:module:import_dll Loading library MSVCR120.dll (which is needed by L"C:\\windows\\system32\\MSVCP120.dll") failed (error c000007b).
Failed to load DLL MSVCP120.dll
$ wine64 regsvr32 MSVCR120.dll
Application tried to create a window, but no driver could be loaded.
Make sure that your X server is running and that $DISPLAY is set correctly.
err:systray:initialize_systray Could not create tray window
Failed to load DLL MSVCR120.dll

В чём может быть проблема?

olegd ★★★
() автор топика
Ответ на: комментарий от anonymous

Внезапно регистр символов в имени файла. Совпадает?

Изначально был нижним, сменил на то, что в тексте ошибки. Не помогло.

olegd ★★★
() автор топика
Ответ на: комментарий от olegd

(Про winetricks знаю.)

ну так расковыряйте его и гляньте какие правки он вносит в реестр при установке библиотек

SR_team ★★★★★
()
Ответ на: комментарий от olegd

По умолчанию.

Не некорофиль.

есть

Если бы была, то этой ошибки бы не было.

anonymous
()
Ответ на: комментарий от olegd

Или импортировать файл реестра

Windows Registry Editor Version 5.00

[HKEY_CURRENT_USER\Software\Wine\DllOverrides]
"MSVCR120"="native,builtin"

Через команду wine regedit dlloverride.reg

xDShot ★★★★★
()
Ответ на: комментарий от EXL

Иногда в Linux возникает такая же ситуация. В репозитории нет нужной версии библиотеки, поэтому приходится самому собирать или брать уже готовую.

anonymous
()
Ответ на: комментарий от xDShot

export WINEDLLOVERRIDES=MSVCR120=n

wine regedit dlloverride.reg

Спасибо, может пригодиться ещё.

olegd ★★★
() автор топика
Ответ на: комментарий от stormblastt

На другой машине работает без иксов.

olegd ★★★
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.