Вопрос или проблема
Fedora 21 x64 (LXDE spin)
wine-1.7.30 (Compholio)
Под Linux Wine я пытаюсь выполнить эту команду:
$ wine "/home/user/.foobar2000/drive_c/Program Files/foobar2000/foobar2000.exe" /runcmd-playing="Tagging/Quick Tagger/Set <Rating> to/[Remove Field]"
Проблема в том, что когда я выполняю это, я получаю следующую ошибку
fixme:heap:HeapSetInformation (nil) 1 (nil) 0
Хотя я могу выполнить код, при каждом входе в систему меня приветствует ошибка.
Это связано с тем, что я добавил это в файл конфигурации lxde-rc.xml LXDE. В нем говорится, что ошибка в конце самого файла, но это из-за этой конкретной синтаксической ошибки, поэтому сообщение об ошибке на этом этапе не имеет значения.
На моем опыте это связано с попыткой запустить 32-битную программу в 64-битном wineprefix. Чтобы это исправить, создайте 32-битный wine prefix:
# Это создаст его в ~/.wine32, но он может находиться в любом месте, которое вам принадлежит
# Обратите внимание, что он НЕ ДОЛЖЕН существовать. winecfg ДОЛЖЕН создать его.
WINEARCH=win32 WINEPREFIX=~/.wine32 winecfg
Вам также нужно указать этот wineprefix как переменную окружения всякий раз, когда вы хотите запустить 32-битное приложение. Это установит все в текущей сессии оболочки для запуска в 32-битном wine prefix:
export WINEPREFIX=~/.wine32
Затем запустите установщик foobar2k, а затем запустите foobar2k с помощью:
wine "/home/user/.wine32/drive_c/Program Files/foobar2000/foobar2000.exe" /runcmd-playing="Tagging/Quick Tagger/Set <Rating> to/[Remove Field]"
Ответ или решение
Исправление ошибки "fixme:heap:HeapSetInformation" при запуске Foobar2000 через Wine на Fedora 21
Когда вы запускаете программу в среде Wine, вы можете столкнуться с различными предупреждениями и ошибками. Одним из часто встречающихся сообщений является "fixme:heap:HeapSetInformation (nil) 1 (nil) 0"
, которое появляется при попытке запустить 32-разрядное приложение на 64-разрядной версии Wine. Это сообщение не является критической ошибкой, а скорее обозначает, что Wine еще не реализовал определенные функции для работы с памятью.
Если вы используете Fedora 21 с 64-разрядной версией Wine для запуска Foobar2000 и получаете это сообщение, следуйте инструкциям ниже.
Причина проблемы
Скорее всего, проблема возникает из-за несоответствия архитектуры Wine и приложения Foobar2000, которое вы пытаетесь запустить. При использовании 64-разрядного Wine для выполнения 32-разрядного приложения могут возникать различные ошибки, такие как "fixme". Данное предупреждение на самом деле указывает на то, что вашему приложению могут недоставать некоторых функций, которые Wine еще не поддерживает.
Решение проблемы
-
Создание 32-разрядного префикса Wine:
Вам необходимо создать 32-разрядный префикс Wine. Это можно сделать с помощью следующей команды:WINEARCH=win32 WINEPREFIX=~/.wine32 winecfg
Убедитесь, что директория
~/.wine32
не существует перед выполнением команды, так какwinecfg
создаст новый префикс. -
Настройка переменной окружения:
Каждый раз, когда вы хотите запустить Foobar2000 с использованием 32-разрядного префикса, вам нужно задать переменную окруженияWINEPREFIX
. Вы можете сделать это в текущей оболочке:export WINEPREFIX=~/.wine32
-
Установка Foobar2000:
Загрузите установочный файл Foobar2000 и установите его в созданный префикс. Используйте следующую команду:wine "/path/to/installer/foobar2000_installer.exe"
-
Запуск Foobar2000 со скриптом:
После установки, вы можете запустить программу с необходимыми параметрами, используя следующую команду:wine "/home/user/.wine32/drive_c/Program Files/foobar2000/foobar2000.exe" /runcmd-playing="Tagging/Quick Tagger/Set <Rating> to/[Remove Field]"
Заключение
Следуя указанным шагам, вы сможете устранить предупреждение "fixme:heap:HeapSetInformation"
и улучшить работу Foobar2000 в среде Wine на вашей системе Fedora 21. Не забывайте, что сообщения fixme не всегда означают, что приложение не будет функционировать, но использование 32-разрядного префикса помогает избежать многих потенциальных проблем с совместимостью.