|
Snork
|
|
Компоновка MFC с OCX-файлом06.12.2007, 15:30. Показов 1733. Ответов 3
Метки нет (Все метки)
Доброе время суток!
Намедни я столкнулся с проблемой регистрации OCX'а. По совету Boombastic'а я сделал релизный конфиг активным и от себя уж прилинковал MFC статически (на всякий случай). Не знаю, что именно помогло, но заработало. Но это навело меня на размышления. Читал я где-то, что к OCX'у НИКАК нельзя линковать MFC. Дескать, надо пользоваться шаровыми дллками. И автор даже грозился, что не то, что работать не будет, а и компилятор вас обругает и не сделает этого категорически. Но мой делает. Нет, понятно, что в результате такого хода файл распухнет и в страницу его будет не интегрировать, почему и юзают ATL, но сам принцип компоновки??? Кто-нибудь знает, можно это делать или нет? Ну, т.е. я убедился, что можно, но откуда вообще такая тема пошла, что нельзя? Всего, Снорк. [www.snorkonline.narod.ru] [snorkleg@mail.ru] |
|
| 06.12.2007, 15:30 | |
|
Ответы с готовыми решениями:
3
Как работать с OCX без MFC Подключение OCX элемента а НЕ MFC программе Win32 компоновка проекта с MFC |
|
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
|
|
| 06.12.2007, 19:07 | |
|
Помогаю со студенческими работами здесь
4
Подключение OCX ActiveX элемента НЕ в MFC приложение Win32
Visual Studio C++ MFC Application - работа с файлом
Можно ли программно поработать с файлом PageMaker'a, как с текстовым файлом? Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
моя боль
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 из. . .
|