PublicJoke » 26.05.2008 16:07:27
Английский технический программерский читаю нормально, но писать не могу, в этом смысле "никакой". Коллега, впрочем, обещает в ближайшее время подтянуться до внятного изъяснения.
pas_uno.dll (so) выкинуть никак невозможно, это требование самого UNO. Схема такая - клиентское приложение, используя запросы вида uno_CreateEnvironment и uno_GetMapping из системной библиотеки cppu3.dll (so) UNO, создает нужную ему языковую среду (в нашем случае паскаль). При этом UNO в своем системном каталоге ищет библиотеку с определенными именем и набором поддерживаемых функций. Если все срослось, клиентская программа получает уведомление о том, что среда создана. Т.е., по-хорошему, должна быть еще и соответствующая "объемная" dll (в случае с Delphi это bpl), поддерживающая языковую среду сразу для нескольких приложений. Именно там мы и сделали в самом начале, когда работали только с Delphi. Потом, когда захотелось поддержать еще и FreePascal, пришлось специально сделать single-версию (я, например, уверен, что посыпятся косяки, если несколько FreePascal'евских программ на одной машине попытаются обратиться к OpenOffice одновременно с помощью нашего моста).
Единственный способ облегчить себе жизнь - довести мост до состояния Production/Stable (в частности, сделать его-таки двунаправленным) и заставить разработчиков OpenOffice включить pas_uno в комплект поставки (это если Вас напрягают вопросы автоинсталляции).