Поиск:

Ответ в темуСоздание новой темы Создание опроса
> libreoffice writer + Qt 
:(
    Опции темы
ss
Дата 21.11.2016, 19:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 133
Регистрация: 17.5.2007

Репутация: нет
Всего: нет



закачал libreoffice и libreoffice sdk
скомпилировал заголовки.
пытаюсь перенести пример в sdk в Qt.

возникает ошибка с ::cppu::defaultBootstrap_InitialComponentContext()

 ошибка: undefined reference to `cppu::defaultBootstrap_InitialComponentContext()'

как ее исправить ? возможно надо какая-то либа ?

.pro
Код

INCLUDEPATH += $$(OO_SDK_HOME)\include

LIBS += -L$$(OO_SDK_HOME)\lib -licppu
LIBS += -L$$(OO_SDK_HOME)\lib -licppuhelper
LIBS += -L$$(OO_SDK_HOME)\lib -lipurpenvhelper
LIBS += -L$$(OO_SDK_HOME)\lib -lisal
LIBS += -L$$(OO_SDK_HOME)\lib -lisalhelper


cpp взял из примера sdk.
Код

#include <stdio.h>
#include <wchar.h>
#include <cppuhelper/bootstrap.hxx>
#include <osl/file.hxx>
#include <osl/process.h>
#include <rtl/process.h>
#include <com/sun/star/beans/XPropertySet.hpp>
#include <com/sun/star/bridge/XUnoUrlResolver.hpp>
#include <com/sun/star/frame/Desktop.hpp>
#include <com/sun/star/frame/XComponentLoader.hpp>
#include <com/sun/star/lang/XMultiComponentFactory.hpp>
#include <com/sun/star/registry/XSimpleRegistry.hpp>
#include <string.h>
using namespace com::sun::star::uno;
using namespace com::sun::star::lang;
using namespace com::sun::star::beans;
using namespace com::sun::star::bridge;
using namespace com::sun::star::frame;
using namespace com::sun::star::registry;
using ::rtl::OUString;
using ::rtl::OUStringToOString;

void MainWindow::ooWriter()
{

    OUString sConnectionString("uno:socket,host=localhost,port=2083;urp;StarOffice.ServiceManager");

    Reference< XComponentContext > xComponentContext(::cppu::defaultBootstrap_InitialComponentContext());

    /* Gets the service manager instance to be used (or null). This method has
       been added for convenience, because the service manager is a often used
       object.
    */
    Reference< XMultiComponentFactory > xMultiComponentFactoryClient(
        xComponentContext->getServiceManager() );

    /* Creates an instance of a component which supports the services specified
       by the factory.
    */
    Reference< XInterface > xInterface =
        xMultiComponentFactoryClient->createInstanceWithContext(
            "com.sun.star.bridge.UnoUrlResolver",
            xComponentContext );
//
    Reference< XUnoUrlResolver > resolver( xInterface, UNO_QUERY );

    // Resolves the component context from the office, on the uno URL given by argv[1].
    try
    {
        xInterface = Reference< XInterface >(
            resolver->resolve( sConnectionString ), UNO_QUERY );
    }
    catch ( Exception& e )
    {
        printf("Error: cannot establish a connection using '%s':\n       %s\n",
               OUStringToOString(sConnectionString, RTL_TEXTENCODING_ASCII_US).getStr(),
               OUStringToOString(e.Message, RTL_TEXTENCODING_ASCII_US).getStr());
        exit(1);
    }

    // gets the server component context as property of the office component factory
    Reference< XPropertySet > xPropSet( xInterface, UNO_QUERY );
    xPropSet->getPropertyValue("DefaultContext") >>= xComponentContext;

    // gets the service manager from the office
    Reference< XMultiComponentFactory > xMultiComponentFactoryServer(
        xComponentContext->getServiceManager() );

    /* Creates an instance of a component which supports the services specified
       by the factory. Important: using the office component context.
    */
    Reference < XDesktop2 > xComponentLoader = Desktop::create(xComponentContext);

    /* Loads a component specified by an URL into the specified new or existing
       frame.
    */
    OUString sAbsoluteDocUrl; //, sWorkingDir, sDocPathUrl, sArgDocUrl;
    sAbsoluteDocUrl = "C:/Program Files (x86)/LibreOffice 5/sdk/examples/cpp/DocumentLoader/test.odt";
    Reference< XComponent > xComponent = xComponentLoader->loadComponentFromURL(
        sAbsoluteDocUrl, OUString( "_blank" ), 0,
        Sequence < ::com::sun::star::beans::PropertyValue >() );

    // dispose the local service manager
    Reference< XComponent >::query( xMultiComponentFactoryClient )->dispose();

}

PM MAIL   Вверх
baldman88
Дата 22.11.2016, 00:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 210
Регистрация: 18.1.2009

Репутация: нет
Всего: 7



Два вопроса:
1. Переменная OO_SDK_HOME установлена?
2. Какой компилятор используется?

Это сообщение отредактировал(а) baldman88 - 22.11.2016, 00:59
PM MAIL   Вверх
ss
Дата 22.11.2016, 18:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 133
Регистрация: 17.5.2007

Репутация: нет
Всего: нет



уже разобрался.

ОС: windows 7 x32
компилятор mingw32
пути были прописаны все.

проблемы была в том что когда скачиваешь libreoffice для windows он компилирован VC.

для Qt нужно пересобрать libreoffice.

PM MAIL   Вверх
baldman88
Дата 22.11.2016, 21:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 210
Регистрация: 18.1.2009

Репутация: нет
Всего: 7



Насколько помню, их SDK собран компилятором от ms. Так что нужно качать сборку Qt под этот компилятор и им же все собирать. С gcc из mingw вряд ли что-то получится (если нет из чего собрать SDK под него).
PM MAIL   Вверх
ss
Дата 24.11.2016, 18:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 133
Регистрация: 17.5.2007

Репутация: нет
Всего: нет



мне нужно для mingw т.к. программа будет использоваться в linux.


Как в Qt подключить файл offapi.rdb  ? 
без этого файла проект не связывается с libreoffice.

Пробовал как приводится на форумах сделать загрузку через процесс но такой вариант в linux не работает.

Это сообщение отредактировал(а) ss - 24.11.2016, 18:59
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С/С++: Кроссплатформенное программирование, QT/Gtk+/wxWidgets"
JackYF
Любитель
  • В заголовке темы в квадратных скобках обозначьте используемую вами библиотеку, например: [QT],[GTK],[wx].
  • Если вопрос актуален только для некоторой версии библиотеки, либо, если вы пользуетесь не самой последней версией, укажите это. Например: [QT4], [GTK2].
  • Все начинающие изучать Qt - не забудьте зайти сюда.
  • Проставьте несколько ключевых слов темы, чтобы её можно было легче найти.
  • В вопросе укажите полную версию версию библиотеки, а также все дополнительные используемые программные пакеты.
  • Не забывайте пользоваться кнопкой "Код".
  • Телепатов на форуме нет! Задавайте чёткий, конкретный и полный вопрос. Указывайте полностью ошибки компилятора и компоновщика.
  • Новое сообщение должно иметь прямое отношение к тематике этого раздела. Флуд, флейм, оффтопик запрещены.
  • Категорически запрещается обсуждение вареза, "кряков", взлома программ и т.д.

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, JackYF, Любитель.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | С/С++: Кроссплатформенное программирование, Qt/Gtk+/wxWidgets | Следующая тема »


 




[ Время генерации скрипта: 0.0839 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.