Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.63/8: Рейтинг темы: голосов - 8, средняя оценка - 4.63
Snork

Компоновка MFC с OCX-файлом

06.12.2007, 15:30. Показов 1733. Ответов 3
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Доброе время суток!

Намедни я столкнулся с проблемой регистрации OCX'а. По совету Boombastic'а я сделал релизный конфиг активным и от себя уж прилинковал MFC статически (на всякий случай). Не знаю, что именно помогло, но заработало.

Но это навело меня на размышления. Читал я где-то, что к OCX'у НИКАК нельзя линковать MFC. Дескать, надо пользоваться шаровыми дллками. И автор даже грозился, что не то, что работать не будет, а и компилятор вас обругает и не сделает этого категорически. Но мой делает. Нет, понятно, что в результате такого хода файл распухнет и в страницу его будет не интегрировать, почему и юзают ATL, но сам принцип компоновки??? Кто-нибудь знает, можно это делать или нет? Ну, т.е. я убедился, что можно, но откуда вообще такая тема пошла, что нельзя?

Всего, Снорк. [www.snorkonline.narod.ru] [snorkleg@mail.ru]
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
06.12.2007, 15:30
Ответы с готовыми решениями:

Как работать с OCX без MFC
подскажите как работать с OCX без MFC. Как получать эвенты и т.д.? Может у кого есть пример?

Подключение OCX элемента а НЕ MFC программе Win32
Привет. Подскажите пожалуйста, каким образом можно подключить ActiveX элемент в формате OCX к программе Win32 без MFC? Может в последних...

компоновка проекта с MFC
Здравствуйте! Программа, написанная с использованием MFC, работает с изображением. При запуске на другом ПК изображение не загружается,...

3
7 / 7 / 12
Регистрация: 13.02.2007
Сообщений: 1,255
06.12.2007, 16:00
Подожди я не уловил, кто куда прикомпоновался статически?
Если ты говоришь об установках компилятора Use MFC in a Static Library, то это работает только для MFC библиотек и в основном для mfc42.dll. То есть когда ты будешь использовать класс CString или CWnd программа не полезет искать библиотеку mfc42.dll сначала в памяти, потом если таковой нет то по дискам, а будет использовать внедренный в твою программу код. И это нормально, при создании своих ActiveX компонентов и прочих COM объектов ты с легкостью можешь использовать эту опцию, как впрочем и при создании приложения, даже если это приложение использует твои или сторонние COM-объекты.
С другой стороны, если ты хочешь использовать библиотеку, содержащую COM-объеты, и линковать ее статически (те же *.ocx - файлы) - вот это у тебя не получиться. Библиотека должна быть зарегистрирована в реестре и скомпонована по особым правилам и т.п. то есть тебе придется с проектом, который использует COM-объекты, нести эти самые объекты в своих библиотеках и регистрировать их.
По поводу ATL-на самом деле сложно утверждать, что код получается гораздо меньше, особенно если не использовать статическую компановку в первом случае (с MFC). Я бы даже сказал, наоборот, так как библиотека mfc42.dll уже включена в стандарт Windows 2000/ME, многие пользователи уже более старых ОС, уже давно установили ее с одним из многочисленных проектов, разработтаном на VC++ с применением MFC, то в принципе ее можно и не включать в поставку, просто сделать ссылочку в FAQ, что возможно отсутствует библиотека mfc42.dll. Тогда код сгенерированного ocx с использованием MFC будет раз в 5 - 10 меньше подобного, но с использованием ATL (цифра так навскидку и конечно может варьироваться). Кроме того разработка, например ActiveX компонентов с использованием MFC мне показалась гораздо легче, чем с ATL. Обычно для контролов я использую MFC, а для библиотек функций - ATL (все таки приятно когда ты не зависишь ни от каких сторонних библиотек Хотя конечно сложно mfc42.dll назвать сторонней ).

С уважением, Владимир
0
Snork
06.12.2007, 18:41
Владимир, привет!

Ну, про то, что ocx'ы не скомпонуешь, знают все, кто понимает, что такое позднее связывание и откуда есть пошел COM (стандарт двоичного позднего связывания). Нужна 'прописка' в реестре, 'гуиды' etc. Я не про то. Я о другом. Вот именно, что в какой-то книжке читал, что опцию 'Use MFC in a static lib' нельзя включать для ActiveX - контролов, сгенерированных визардом. Гон какой-то, верно? Я просто хотел понять, откуда ветер дует.
------------------------------------
Во, не поленился, нашел. Кэйт Грегори, 'Использование VC++ 6'. Цитирую (стр 484.): 'Возможно, вам придет в голову идея скомпоновать библиотеку MFC и элемент управления статически. На 1ый взгляд, сделать это не сложно - выбрать Build->Settings. <...> Сделав это, вы столкнетесь с множеством ошибок компоновки: функций классов COleControl и CPropPage. Последние не входят в состав DLL-модулей, которые можно компоновать статически.' Далее про гейтсовцев, которые не предполагали, что кто-то запузырит ЭмЭфСю в ocx. Теперь вопрос понятен? Или автор говорит о чем-то другом, а я не так понял, или ей пора переквалифицироваться в управдомы :-))).

С уважением - Снорк.
7 / 7 / 12
Регистрация: 13.02.2007
Сообщений: 1,255
06.12.2007, 19:07
Ясьненько.
Странно, и вроде бы VC++6.0, а какого года книжка? Оригинальное издание? Может парни из Microsoft прочитали ее и одумались
В любом случае, раз это работает, то надо радоваться!

Счастья Вам, Владимир
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
06.12.2007, 19:07
Помогаю со студенческими работами здесь

Подключение OCX ActiveX элемента НЕ в MFC приложение Win32
Привет. Подскажите пожалуйста, каким образом можно подключить ActiveX элемент в формате OCX к программе Win32 без MFC? Может в последних...

Ошибка с файлом MCI32.OCX при установке своего проекта
Делал задание которое даёт книга. Создать свой плеер уже с встроенными треками. Вот что получилось Код Visual Basic 6.0 ...

Visual Studio C++ MFC Application - работа с файлом
Средствами c++ создаётся некий файл: void Cvar5Dlg::OnBnClickedButton2() { CDialog1 dlg; CFile myFile; ...

Как программно в Visual C++ (MFC или API) установить связь ODBC драйвера с файлом Access?
Здравствуйте. Подскажите пожалуйста, как программно в Visual C++ (MFC или API) установить связь ODBC драйвера с файлом Access базы данных...

Можно ли программно поработать с файлом PageMaker'a, как с текстовым файлом?
Можно ли программно поработать с файлом PageMaker'a, как с текстовым файлом. Задача состоит в том, чтобы содрать содержимое большого...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Новые блоги и статьи
моя боль
iceja 24.01.2026
Выложила интерполяцию кубическими сплайнами www. iceja. net REST сервисы временно не работают, только через Web. Написала за 56 рабочих часов этот сайт с нуля. При помощи perplexity. ai PRO , при. . .
Модель сукцессии микоризы
anaschu 24.01.2026
Решили писать научную статью с неким РОманом
http://iceja.net/ математические сервисы
iceja 20.01.2026
Обновила свой сайт http:/ / iceja. net/ , приделала Fast Fourier Transform экстраполяцию сигналов. Однако предсказывает далеко не каждый сигнал (см ограничения http:/ / iceja. net/ fourier/ docs ). Также. . .
http://iceja.net/ сервер решения полиномов
iceja 18.01.2026
Выкатила http:/ / iceja. net/ сервер решения полиномов (находит действительные корни полиномов методом Штурма). На сайте документация по API, но скажу прямо VPS слабенький и 200 000 полиномов. . .
Расчёт переходных процессов в цепи постоянного тока
igorrr37 16.01.2026
/ * Дана цепь(не выше 3-го порядка) постоянного тока с элементами R, L, C, k(ключ), U, E, J. Программа находит переходные токи и напряжения на элементах схемы классическим методом(1 и 2 з-ны. . .
Восстановить юзерскрипты Greasemonkey из бэкапа браузера
damix 15.01.2026
Если восстановить из бэкапа профиль Firefox после переустановки винды, то список юзерскриптов в Greasemonkey будет пустым. Но восстановить их можно так. Для этого понадобится консольная утилита. . .
Сукцессия микоризы: основная теория в виде двух уравнений.
anaschu 11.01.2026
https:/ / rutube. ru/ video/ 7a537f578d808e67a3c6fd818a44a5c4/
WordPad для Windows 11
Jel 10.01.2026
WordPad для Windows 11 — это приложение, которое восстанавливает классический текстовый редактор WordPad в операционной системе Windows 11. После того как Microsoft исключила WordPad из. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru