Лена |
Отправлено: 26.11.2005, 13:14 |
|
Мастер участка
Группа: Участник
Сообщений: 501
|
Какие дополнительные меры, надо предпринять при компиляции релиза в проекте, который содержит ActiveX?
В моем проекте есть компонент ActiveX для картографии MapX. В режиме отладки и выполнения все работает отлично. При попытке откомпилировать, как полный релиз выдает ошибку:
[C++ Fatal Error] Main.cpp(88): F1004 Internal compiler error at 0xc56de7 with base 0xc10000
Ошибка на первой же строке, где упоминается методы MapX в главной форме:
for(int Cnt_Lyr=1; Cnt_Lyr<=Map1->Layers->Count; Cnt_Lyr++)
{
CMapXLayer * LYR = Map1->Layers->_Item(OleVariant(Cnt_Lyr));//вот здесь
Все это происходит лишь при попытке получить EXE файл как релиз, в остальном проект работает без проблем.
Спасибо.
|
|
** Лена |
Отправлено: 28.11.2005, 15:05 |
|
Не зарегистрирован
|
Релиз удается получить, если оставить галочку в опциях компиляции Disable inline expansions. С установленной галочкой все нормально.
Будет ли такой релиз полноценным?
|
|
Guest |
Отправлено: 28.11.2005, 20:42 |
|
Не зарегистрирован
|
1
Disable inline expansion — запрет inline-подстановки методов
2
http://www.rsdn.ru/Forum/Message/226476.htm
Только все равно ActiveX надо будет устанавливать отдельно,
на каждом компьютере, где будет работать программа,
в exe-файл он в любом случае не войдет.
(если я правильно все понимаю) |
|
Guest |
Отправлено: 28.11.2005, 20:44 |
|
Не зарегистрирован
|
Из вышеуказанного я имел ввиду вот это:
QUOTE | В дебаге по умолчанию Inline expansion отключен, так что все ок — создается одна функция, и соответственно единственный статический объект при первом вызове.
В релизе же ситуация такая: Singleton::Instance прекрасный кандидат для встраивания, и компилятор с радостью это встраивание производит. В результате каждый вызов (в исходном коде конечно) Singleton::Instance оборачивается созданием нового статического объекта. |
У вас по-видимому ситуация аналогичная. |
|
Лена |
Отправлено: 29.11.2005, 11:32 |
|
Мастер участка
Группа: Участник
Сообщений: 501
|
Cрпасибо за объяснения.
>Только все равно ActiveX надо будет устанавливать отдельно,
на каждом компьютере, где будет работать программа,
в exe-файл он в любом случае не войдет.
Нет опыта в этом деле.
ActiveX лежит на форме. Когда буду создавать инсталляционный пакет моей программы, как правильно инсталлировать ActiveX? Что программа будет состоять из двух дисков? Один родной, откуда я устанавливала сам MapX 5.0, другой с моей программой использующей этот MapX 5.0?
|
|
Gedeon |
Отправлено: 29.11.2005, 12:34 |
|
Ветеран
Группа: Модератор
Сообщений: 1742
|
Нет, ни в коем случае, программы установки могут сами инсталировать ACTIVEX компоненты, когда я писал на бэйсике, родная от мс даже умела находить используемые в программе и включать их, поищите информацию в сети, должно быть.
|
|
Kuks |
Отправлено: 29.11.2005, 12:40 |
|
Станционный диспетчер
Группа: Участник
Сообщений: 108
|
2 Lena
Можно ли где нибудь найти в ИНЕТЕ MapX 5.0 (ломанный)
или нет? Сам искал не нашел (только триал).
Очень интересует этот вопрос....
Спасибо!
|
|
Лена |
Отправлено: 29.11.2005, 14:30 |
|
Мастер участка
Группа: Участник
Сообщений: 501
|
MapX можно скачать с официального сайта http://www.mapinfo.com
30 дней триал.
Остальное по почте, если надо, могу выслать. |
|
Guest |
Отправлено: 29.11.2005, 16:07 |
|
Не зарегистрирован
|
QUOTE | Что программа будет состоять из двух дисков |
Лучше всего воспользоваться для этого инсталлятором.
Очень простой и удобный — Wise Professional 9.
Есть на дисках на комп рынках — недавно сам такой диск
себе купил — называется "Инсталляторы и паковщики."
На нем еще десяток-два разных хороших инсталляторов,
в том числе Wise 9 и Install Shield Wizard.
Делаете релиз программы, и его, и другие входящие в
проект файлы компилите этим инсталлятором
в 1 файл — например install.exe
Ну можете, конечно, еще написать — положить
отдельно install.txt или readme.txt
и записывате (если по размеру уместится) на 1 диск.
Обычно, для установки ActiveX:
"Для установки ActiveX элемента нажмите Пуск — Выполнить введите следующую команду regsvr32 "Путь к элементу *.ocx и нажмите кнопку Ок. У вас должно выйти сообщение об успешом выполнении установки ActiveX элемента."
Вроде это можно сделать как-то программно,
может ли это сделать инсталлятор — не знаю.
|
|
Guest |
Отправлено: 29.11.2005, 16:21 |
|
Не зарегистрирован
|
http://rsdn.ru/Forum/?mid=1086199 |
|
Guest |
Отправлено: 29.11.2005, 16:33 |
|
Не зарегистрирован
|
http://rsdn.ru/article/install/Deploying.xml |
|
Лена |
Отправлено: 29.11.2005, 17:15 |
|
Мастер участка
Группа: Участник
Сообщений: 501
|
Guest, большое спасибо за столь подробную и полезную для меня информацию! |
|