Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Общие вопросы по .NET и C# > Не могу запустить программу в другой системе


Автор: Dgedit 5.12.2010, 14:04
Проблема такая: ОС - Vindows 7 64-x битная, VS 2010, проект на C#(.NET Framework 3.5) к нему подключается библиотека на C++. На той системе на которой стоит VS все работает нормально. Запускаю виртуальную машину с Windows XP  на борту, .NET Framework стоит нужный, программа запускается нормально, но когда я нажимаю кнопку, нажатие которой вызывает функцию из DLL - получаю сообщение:
System.DllNotFoundException: Не удается загрузить DLL "Func.dll": Не найден указанный модуль. (Исключение из HRESULT: 0x8007007E)
Естественно библиотека лежит в той же папке, и точки входа ни при чем, так как на семерке это работает(когда библиотека лежит в той же папке).
Я так подозреваю что проблема в 64-х и 32-х битных приложениях. Но я уже все настройки вроде перепробовал и никак не помогает.
Помогите...

Автор: jonie 5.12.2010, 15:43
1) пройтись по Сишной либе Depends-ом (прога такая). Убедиться что у вас стоит MS CRT нужной версии (если вы собирали собственно с динамической CRT). Подробнее в разделе C++ в прикрепленых темах.
2) поставить своей проге на C# явное указание процессора x86, а не any cpu как по умолчанию идёт. Т.е. если у вас cpp либа является x86, то и .NET прога должна явно указывать что хочет x86

Автор: Dgedit 5.12.2010, 16:20
Тут ужас какой-то.
посмотрел Depends'om, обй файла, библиотека и exe ссылки на другие библиотеки идут на 64-х битные.
Версии рантайм библиотек вроде совпадают на обоих системах за исключением х64 библиотек, так как я не могу их установить на виртуалку - там 32-х битная ХР стоит.
Проблема похоже кроется в том что библиотека создается 64-х битной.
Только вот поверьте, уже весь мозг сломал, не могу для С++ проекта найти где ему можно явно указать платформу - 32-х или 64-х битную

Добавлено через 2 минуты и 21 секунду
В настройках С++ проекта - платформа только одна на выбор - Win32

Автор: jonie 5.12.2010, 16:40
Dgedit, win32 это не платформа, это конфигурация как раз, а вот в ней уже можно выбрать как собирать . в общем идите в конфигурейшен менеджер, посмотрите там платформу в конфигурации win32 какую указали....

Автор: Dgedit 5.12.2010, 17:05
Ну вот я выбираю новую платформу для библиотеки а там на выбор только x64

Автор: jonie 5.12.2010, 17:36
Dgedit, ну если вы уверены что делаете все правильно, то вероятно у вас не стоит 32 битный компайлер

Автор: Dgedit 5.12.2010, 17:41
 smile во ужас, я ставил студию, скорее всего х64 битную - но неужели там нет 32-х разрядного компиллятора? И как быть?

Автор: jonie 5.12.2010, 18:10
Цитата(Dgedit @  5.12.2010,  17:41 Найти цитируемый пост)
 во ужас, я ставил студию, скорее всего х64 битную

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

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)