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

Awesomium - для C++ Builder, или Как в Билдере использовать DLL, написанные в MSVC, если coff2omf не помогает

07.05.2017, 14:18. Показов 5257. Ответов 3
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Потребовалось разработать приложение типа "браузер" на C++ Builder, что я делаю нечасто, потому что неактуально.
Специально поставил новейшую RAD Studio 10.2 Tokyo. Осталось выбрать движок...

Первое, что попробовал, это Awesomium, который понравился, когда юзал на C#. С хедерами - все ОК, нигде не ругается. Но, с awesomium.lib возникла проблема - линковщик ругается, что она в формате COFF, а Билдеру надо OMF.
Прошелся по нему специальной утилитой из Билдера:
Code
1
coff2omf awesomium.lib awesomium-bcb.lib
Теперь линковщик его съел, но, при использовании каких-либо классов, структур - ругается на неразрешенный внешний символ, как будто #pragma comment(lib) нет вовсе...

Не по теме:

Отложил Awesomium и попробовал CEF через DCEF (это враппер под Delphi), он быстро завелся, но, мне не понравился - какой-то сырой, мелкие шероховатости, доков на враппер нет, PepperFlash пришлось вручную добавить (выдернул прямо из своего браузера), да и весит слишком много...


В общем, вернулся опять к Awesomium...

Еще попробовал утилиту implib:
Code
1
implib awesomium.lib awesomium.dll
Но, и с ней та же история...

Тут уже, решил разобраться в причине. Даже, создал 4 тестовых проекта в Студии и в Билдере (в них я выдернул 1 структуру Awesomium::Rect, она совсем маленькая), чтобы нагляднее все увидеть.

DependencyWalker подтвердил мои предположения - да, корень проблемы - в самой DLL.
Awesomium скомпилирован в MSVC, у нее свой формат декорации. Например, так выглядит конструктор Awesomium::Rect(void):
Code
1
??0Rect@Awesomium@@QAE@XZ
А, у C++ Builder формат - свой, в нем тот же конструктор должен выглядеть так:
Code
1
@Awesomium@Rect@$bctr$qv
Значит, нужно пройтись по всем функциям и переделать - либо в самой DLL, либо в новой LIB (она создается с помощью *.DEF, где пишется соответствие (alias) для каждой функции).
Второе - правильнее, и, это можно сделать вручную, но, в awesomium.dll всего около 900 функций...

Разумеется, нужно как-то автоматизировать процесс.
Подумал, что нужны какие-то доп. опции для coff2omf и implib... Какие именно - неясно, и LIB не знаю где нормально посмотреть, только методом тыка... Так и сделал - для coff2omf проверил все 3 опции -lib:xx, и для implib тоже все опции, что есть - ни одна ни помогла...

Неужели Embarcadero до сих пор не сделали для этого утилиты?
Сторонних утилит я не нашел, ведь спецификаций на свою декорацию они тоже нигде не выложили...

Видимо, остается только писать свой алгоритм парсера (в данном случае это конечный автомат), и, с помощью метода тыка и/или реверс-инжиниринга компилятора Билдера выявить все возможные элементы...
Но, я сомневаюсь, что Embarcadero купит у меня утилиту, если сделаю А взвалить все это на плечи какого-то одного заказчика - как-то неудобно

Или, я, все-таки, что-то упускаю?
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
07.05.2017, 14:18
Ответы с готовыми решениями:

Можно ли модули, написанные на Python, использовать в программе, которая пишется на Delphi? И если можно, то как?
Можно ли модули написанные на Python, использовать в программе которая пишется на Delphi? И если можно, то как?

Как использовать компоненты скомпилированные для C++ Builder 2007 в C++ Builder 2010?
Народ! Такая проблема... Есть набор компонентов т.н. Dicom VCL. Сайт производителя - http://www.medicalconnections.co.uk/. У них на...

Исходники программ на билдере, написанные в классах
Нужны любые исходники программ на билдере написанные в классах. Покидайте пожалуйста:)

3
0 / 0 / 0
Регистрация: 14.04.2017
Сообщений: 9
08.05.2017, 15:02
Смолевич, подскажите пожалуйста,
как CEF добавить в Builder (у меня RAD Studio 10 Seattle)?
Скачал последнюю версию с http://opensource.spotify.com/cefbuilds/index.html но не могу разобраться как ее в Builder встроить. Инфа по компоненту TChromium на форуме устарела. В дистрибутиве нет файлов *.dproj и *.dpk, чтоб добавить в Delphi, а потом уже в Builder как описано в Где скачать компонент TChromium и как его установить?
0
Заблокирован
08.05.2017, 15:30  [ТС]
mrOzzo, Я же написал... Через DCEF... Буква D - о чем-то говорит?
Там и *.dpk враппера для разных версий Delphi, и сам cef... Собрал BPL, подключил к C++ Builder...
Подробный урок для одного вас я писать не собираюсь, зачем вам это эмбаркадеро? У вас 5 лет разработки на ней и мегабайты кода за плечами? Если нет, то лучше бы выкинули свой синдром утенка и занялись .NET... Это кажется тяжелее, но, ИМХО, все говорит о том, что это лучше, чем регулярно убивать минуты на решение "сложнейших" проблем типа "проверить запущен ли процесс" (на C# это делается в 1 строчку, на Билдере - танцы с WINAPI)...
P.S. Последний DCEF - двухлетней давности... Возможно, стоит заменить в нем сами DLL на поновее, но какой смысл когда в Билдере все остальное не лучше, уже забил, пишу на C# и WPF.
0
1408 / 572 / 127
Регистрация: 31.10.2011
Сообщений: 1,960
11.05.2017, 12:44
Цитата Сообщение от Смолевич Посмотреть сообщение
P.S. Последний DCEF - двухлетней давности
а вот это неправда. Последний был выпущен 3 месяца назад.

Добавлено через 8 минут
Правда он не будет работать на Windows XP, для него нужно брать 2454
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
11.05.2017, 12:44
Помогаю со студенческими работами здесь

Можно ли использовать C++ Builder v11 если купить Embarcadero C++Builder XE8
День добрый! Есть старый проект С++. Он компилируется на CodeGear™ C++Builder Version 11. Но на это ПО утеряна лицензия, сейчас...

Как использовать dll, если на него не создана ссылка?
Имеется плееер радио на bass.dll сделанный. Так вот, в итоге рядом с exe должны валятся 2 библиотеки bass.net.dll и bass.dll. Bass.Net...

Как вызывать библиотеки dll, написанные на C#
Библиотека, которая мне нужна содержит класс формы окна, которое мне хотелось бы использовать в моем приложении, как это сделать?

Как можно использовать функции написанные на луа
Попробовал подключить - получилось, но использовать функции почему то не получается (скорее всего не могу догадатся как это сделать),...

Как использовать в билдере ресурсы(Пример)?
Здрассте форумчаны... В билдере как ресурсы можно использовать можете пример покозать? буду очен блогодарен, спсибо заранее ;)


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

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Новые блоги и статьи
Инструменты COM: Сохранение данный из VARIANT в файл и загрузка из файла в VARIANT
bedvit 28.01.2026
Сохранение базовых типов COM и массивов (одномерных или двухмерных) любой вложенности (деревья) в файл, с возможностью выбора алгоритмов сжатия и шифрования. Часть библиотеки BedvitCOM Использованы. . .
Загрузка PNG с альфа-каналом на SDL3 для Android: с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 28.01.2026
Содержание блога SDL3 имеет собственные средства для загрузки и отображения PNG-файлов с альфа-каналом и базовой работы с ними. В этой инструкции используется функция SDL_LoadPNG(), которая. . .
Загрузка PNG с альфа-каналом на SDL3 для Android: с помощью SDL3_image
8Observer8 27.01.2026
Содержание блога SDL3_image - это библиотека для загрузки и работы с изображениями. Эта пошаговая инструкция покажет, как загрузить и вывести на экран смартфона картинку с альфа-каналом, то есть с. . .
Влияние грибов на сукцессию
anaschu 26.01.2026
Бифуркационные изменения массы гриба происходят тогда, когда мы уменьшаем массу компоста в 10 раз, а скорость прироста биомассы уменьшаем в три раза. Скорость прироста биомассы может уменьшаться за. . .
Воспроизведение звукового файла с помощью SDL3_mixer при касании экрана Android
8Observer8 26.01.2026
Содержание блога SDL3_mixer - это библиотека я для воспроизведения аудио. В отличие от инструкции по добавлению текста код по проигрыванию звука уже содержится в шаблоне примера. Нужно только. . .
Установка Android SDK, NDK, JDK, CMake и т.д.
8Observer8 25.01.2026
Содержание блога Перейдите по ссылке: https:/ / developer. android. com/ studio и в самом низу страницы кликните по архиву "commandlinetools-win-xxxxxx_latest. zip" Извлеките архив и вы увидите. . .
Вывод текста со шрифтом TTF на Android с помощью библиотеки SDL3_ttf
8Observer8 25.01.2026
Содержание блога Если у вас не установлены Android SDK, NDK, JDK, и т. д. то сделайте это по следующей инструкции: Установка Android SDK, NDK, JDK, CMake и т. д. Сборка примера Скачайте. . .
Использование SDL3-callbacks вместо функции main() на Android, Desktop и WebAssembly
8Observer8 24.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru