Запуск приложения C# Windows Forms в Windows 7 с ошибкой Parallels 8

Я написал довольно простой C# Windows Forms, и коллега хочет протестировать его в Windows 7, используя Parallels 8, потому что у него только Mac.

Проблема в том, что когда он запускает его с помощью EXE-файла в папке отладки, он получает эту ошибку:

Ошибка при запуске OMAPI (невозможно загрузить DLL «libomapi.dll»: указанный модуль не найден. (Исключение из HRESULT: 0x8007007E)) Проверьте наличие необходимых файлов .dll и правильных версий: OmApiNet.dll libomapi.dll

Как вы можете видеть на изображении ниже, необходимые файлы DLL находятся прямо в той же папке, и если он перенесет эту папку отладки на ПК с Windows, она будет работать нормально, так что это определенно какая-то проблема с виртуальной машиной или Parallels.

Скриншот ошибки

Как я могу решить эту проблему?

Я действительно не использовал виртуальные машины достаточно, чтобы понять, в чем может быть проблема...


person poncho    schedule 21.03.2013    source источник
comment
Какой формат у исполняемого файла по сравнению с библиотеками? Учитывая, что он находится в той же папке, он должен найти его, поэтому мне интересно, действительно ли это проблема с плохим форматом (32-битный или 64-битный)?   -  person Lloyd    schedule 21.03.2013
comment
Вы также можете обнаружить, что это проблема внешней зависимости, что-то в вашей настройке parallels не существует, что существует в вашей другой настройке, попробуйте использовать Dependency Walker - dependencywalker.com   -  person Lloyd    schedule 21.03.2013
comment
Я видел некоторые забавные вещи, когда проект скомпилирован для AnyCPU, но зависимая библиотека - x86, а целевая ОС - x64.   -  person Pete Garafano    schedule 21.03.2013
comment
Убедитесь, что все ваши зависимые библиотеки DLL и ваше приложение построены с использованием одной и той же архитектуры процессора (x86 или x64). Держитесь подальше от AnyCPU с виртуальными машинами.   -  person qJake    schedule 22.03.2013
comment
(Извините за поздний ответ) Ах, хорошо, я спрошу его, какова его настройка Parallels, и я перекомпилирую с x86/x64, а не с AnyCPU, и отчитаюсь. Спасибо всем за помощь.   -  person poncho    schedule 05.04.2013
comment
Его настройка — 64-разрядная версия Windows 8 на Parallels 8 на OSX 10.8.3. Я использовал Dependency Walker, и он говорит, что не может найти IEShims.dll. Я погуглил это, и, по-видимому, это dll Internet Explorer 8, и наше приложение winforms использует элемент управления WebBrowser (который, в свою очередь, использует установку Internet Explorer на ПК), так что может ли это быть проблемой? У него Internet Explorer, поставляемый с Windows 8, установлен точно так же, как и моя не виртуальная машина с 64-разрядной версией Windows 8, но может ли проблема заключаться в этом?   -  person poncho    schedule 12.04.2013
comment
Я также пытался скомпилировать его в профиле x86 и т. Д., Но у нас есть много проектов в этом решении, и по какой-то причине ему не нравится, что некоторые из них изменены на x86, поэтому, когда я изменил основной проект графического интерфейса winforms на x86, он не построить решение.   -  person poncho    schedule 12.04.2013
comment
@poncho: Если некоторые из ваших проектов не ссылаются на библиотеки x64, у которых нет аналога x86, ваше решение WinForms должно быть собрано (если вы что-то не упускаете из виду). x86 работает в обеих средах, но если вы не можете настроить таргетинг на эту платформу в некоторых своих проектах, проблема именно в этом.   -  person Raheel Khan    schedule 22.05.2013
comment
Вы проверили, существует ли libomapi.dll на этой виртуальной машине? Когда вы получаете ошибку DLL, убедитесь, что DLL есть в первую очередь.   -  person TomXP411    schedule 27.07.2013
comment
Я использую OSX с Parallels и Win8 для разработки каждый день; нет проблем. Создайте консоль и winform и еще что-то простое и отправьте ему. Если простые вещи работают, то нет базовой проблемы с дотнетом. Win8 поставляется с IE9, не обязательно совместимым с IE8 на уровне DLL. Эта проблема может быть признаком будущих проблем, выявленных уже сейчас.   -  person LosManos    schedule 29.07.2013


Ответы (3)


было бы интересно запустить на нем ProcMon и посмотреть, что это на самом деле делать, чтобы попытаться найти файлы.

person dethSwatch    schedule 07.01.2014

Возможно, это больше проблема сетевого диска. Попросите его скопировать эту папку с диска Y: (общий с его Mac) на диск C: и снова запустить ее оттуда.

person Hafthor    schedule 07.01.2014

Похоже, вы пытаетесь запустить приложение из общего сетевого ресурса, что запрещено платформой .NET из-за угрозы безопасности. Попробуйте скопировать файлы в другое место на виртуальной машине, например C:\Temp.

person ajawad987    schedule 07.01.2014