Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Delphi: WinAPI и системное программирование > Chromium не работает из dll


Автор: Gwire 6.2.2021, 11:48
Приветствую.

У меня на руках имеется немаленький проект который после запуска от памяти откусывает сходу 170Мб. 
И до недавно в проекте использоваться TWebBrowser. Но он перестал удовлетворять требованиям к работоспособности.
Было решено использовать Chromium. Переклепал программу на другой компонент и все как бы работает, но "дерево" получилось не "вечно зеленое" а "вечно голодное".
В проекте используется 6 экземпляров TChromium каждый из них запускает по 2-3 процесса-клона программы по 170Мб. Просто на ровном месте минус 170Мб*6*2 ~= 2Гб.

Решил сделать ход конем и убить 3х зайцев разом. Один из зайцев - уменьшение размера запускаемого приложения.
Идея заключается в том чтобы разделить проект на dll которые динамически будет подгружать основная программа. 
Если в общем - сделал из главного модуля процедуру Main и экспортировал ее. Получилась вместо exe-шника dll-ка с точкой хода Main.
Ничего не предвещало беды. Программа запускается с 10Мб и работает. После GlobalCEFApp.StartMainProcess создает клонов размером 3..8Мб (dll-ка в этих случаях не подгружается).  Профит...

Но внезапно: Chromium1.CreateBrowser в такой конфигурации перестал создавать браузер.
Пробовал выполнить в Main:
Код

GlobalCEFApp := TCefApplicationCore.Create;
if not GlobalCEFApp.StartMainProcess then Exit;
не помогло.

Сижу репу чешу. У кого-то есть какие то идеи как убедить CreateBrowser таки создавать браузер.


Автор: _zorn_ 2.4.2021, 20:38
> У кого-то есть какие то идеи как убедить CreateBrowser таки создавать браузер.

Переписать на QT/electron  smile ?

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