Форум программистов «Весельчак У»
  *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

  • Рекомендуем проверить настройки временной зоны в вашем профиле (страница "Внешний вид форума", пункт "Часовой пояс:").
  • У нас больше нет рассылок. Если вам приходят письма от наших бывших рассылок mail.ru и subscribe.ru, то знайте, что это не мы рассылаем.
   Начало  
Наши сайты
Помощь Поиск Календарь Почта Войти Регистрация  
 
Страниц: [1]   Вниз
  Печать  
Автор Тема: /VC++ 2010 express/ подключение формы из другого exe файла  (Прочитано 7118 раз)
0 Пользователей и 1 Гость смотрят эту тему.
grizlyk
Новенький

ru
Offline Offline

« : 08-01-2013 10:44 » 

Файл "Pt.exe" содержит форму "Npt::p". Я сам сдел форму и этот файл. Затем я вставляю эту форму в мой другой файл "My.exe" в визуальном редакторе проекта "My.exe".
Файл "My.exe" тогда содержит форму "Form1" в которой есть поле
Код:
    public: Np::p^  p1;

Все это прекрасно работает в конфигурации Debug, но совершено не работает в конфигурации Release, появляется исключение
Код:
System.InvalidProgramException
Среда выполнения Common Language Runtime обнаружила недопустимую программу.
которое порождается кодом "Np::p^ %p = fp(idx);"
Код:
extern
Form1^            *fmain;

void        Np::display(){

//Np::p    ^%p=fmain[0]->p1;
Np::p^ %p = fp(idx);
"fp(idx)" делает "fmain[0]->p1"
 
Также при попытке перенести Debug версию на другой комп, программа молча не выполняется (не запускается и не выдает сообщения об ошибках), пока на компьютере не установлен VC++ 2010.
Можно догадаться, что каким-то образом форма из другого файла не подключается, пока не установлен VC++ 2010.

Вопрос: как решить проблему (желательно чтобы VC автоматически выполнял все подключения правильно), поскольку подключение формы управляется не мной, а кодом Майкрософта?
Записан
Dimka
Деятель
Команда клуба

ru
Offline Offline
Пол: Мужской

« Ответ #1 : 08-01-2013 12:08 » 

Смешались в кучу кони, люди...

Во-первых, для работы программ нужно иметь на машине соответствующую версию .NET. Установка VC++ 2010 здесь ни при чём, просто вместе с VS устанавливается и версия .NET. Используемая версия .NET указана в свойствах проекта, и если используются WinForm и ничего более (вроде WCF, Linq и т.п.), то версию смело можно понижать до 2.0, что расширит переносимость программ на старые операционные системы.

Во-вторых, всякие p.exe, my.exe - это называется assembly (сборка) .NET. Сборки между собой связываются зависимостями в списке References проекта. То, что работает в Debug и не работает в Release, скорее всего означает, что в конфигурации Debug проекта References настроен правильно, а в конфигурации Release неправильно - вообще не установлен. Пожелание "автоматического угадывания студией намерений программиста", очевидно, нереализуемо.

В-третьих, конструкция ^% - ссылка CLI (аналог ref в C#) на указатель CLI - выглядит диковато и оправдана разве что в параметрах функции, но никак не в локальных переменных.
Записан

Программировать - значит понимать (К. Нюгард)
Невывернутое лучше, чем вправленное (М. Аврелий)
Многие готовы скорее умереть, чем подумать (Б. Рассел)
grizlyk
Новенький

ru
Offline Offline

« Ответ #2 : 10-01-2013 14:42 » 

Установка VC++ 2010 здесь ни при чём
В принципе, я тоже знаю ответ, но вот конкретный ответ я спрашиваю не на форуме автомобилистов, а у тех, кто имеет опыт работы с .NET, для них не должно быть проблем с ответом. Для справки: к сожалению, установка VC++ 2010 здесь при чём.

То, что работает в Debug и не работает в Release, скорее всего означает, что в конфигурации Debug проекта References настроен правильно, а в конфигурации Release неправильно
В принципе, я тоже так думаю. Куда ставить то, на че нажимать?

Пожелание "автоматического угадывания студией намерений программиста", очевидно, нереализуемо.
Про угадывание я не понял. Я форму вставляю в визуальном редакторе, при чем тут угадывание?
Записан
Dimka
Деятель
Команда клуба

ru
Offline Offline
Пол: Мужской

« Ответ #3 : 10-01-2013 15:46 » new

Цитата: grizlyk
но вот конкретный ответ я спрашиваю не на форуме автомобилистов, а у тех, кто имеет опыт работы с .NET, для них не должно быть проблем с ответом. Для справки: к сожалению, установка VC++ 2010 здесь при чём.
Ну значит у тех, у кого есть опыт, явные проблемы с телепатией: они должны догадываться, какие у тебя персонально зависимости именно от VC++ 2010, а не от .NET вообще.

Цитата: grizlyk
Куда ставить то, на че нажимать?
А код не твой? По идее, человек, который смог настроить Debug, настроит и Release. Нужно открыть свойства проекта, найти свойства CLI и там настроить References. Если прям даже скриншоты нужны, куда нажимать, то с это и надо начинать тему: ничего не знаю, ничего не умею, объясните подробно.

Цитата: grizlyk
Про угадывание я не понял. Я форму вставляю в визуальном редакторе, при чем тут угадывание?
Прежде чем ты в визуальном редакторе сможешь вставить... форму? может контрол? - не суть - проекты уже должны быть связаны, а значит ты умеешь их связывать.

Раз ты не умеешь делать то, что уже сделано (кем-то), есть подозрение, что ты пытаешься что-то сотворить с не тобой созданным проектом. А это совсем другой разговор. Тут я бы посоветовал создать собственный небольшой тренировочный проект и научиться на нём, как и что делать в VS, и только потом браться за чужое.
Записан

Программировать - значит понимать (К. Нюгард)
Невывернутое лучше, чем вправленное (М. Аврелий)
Многие готовы скорее умереть, чем подумать (Б. Рассел)
Страниц: [1]   Вверх
  Печать  
 

Powered by SMF 1.1.21 | SMF © 2015, Simple Machines