crossplatform.ru

Здравствуйте, гость ( Вход | Регистрация )

 
Ответить в данную темуНачать новую тему
> QTCreator+NCReport(проблема с генерацией отчета), Проблема с генерацией отчета с помощью библиотек NCReport
bayah
  опции профиля:
сообщение 15.12.2009, 20:00
Сообщение #1


Студент
*

Группа: Участник
Сообщений: 31
Регистрация: 23.11.2009
Пользователь №: 1249

Спасибо сказали: 0 раз(а)




Репутация:   0  


Добры молодцы, помогите с такой проблемой. Смотрел по форуму - тем с NCReport'ом всего две и по другому вопросу. Может быть вопрос спецефический, но все же может кто найдется знающий.
У меня стоит QT под Windows. Делаю базу на QSL.
Пытаюсь вывести отчет с помощью NCReport'a(это генератор отчетов). Вообщем сам отчет генерируется из NCReport Disigner'а(то есть соединяется с файлом моей базы db.SQLIE и отображает отчет). Но вот из под QT Creator'а не могу вызвать отчет.
Конкретно проблема в коде где я вызываю отчет. С ним приложение компилируется без ошибок - все нормально, - но окно приложения так и не появляется и в статусе написано "Gdb запущен" - все. Стоит убрать код вызова отчета, - все работает. Может кто сталкивался?

Вот код непосредственно в котором пытаюсь вызвать отчет:

//------------------Формирование отчета
void MainForm::on_Report_clicked()
{
    NCReport *report = new NCReport();
    report->reset(true);
    report->setReportFile("rep0.xml");    //rep0.xml - файл шаблон отчета предварительно составленный NCReport Designr'ом
    report->runReportToPreview();
}


Вот мой pro файл:
QT += xml sql gui core
TARGET = whatiwant
TEMPLATE = app

SOURCES += main.cpp\
        mainform.cpp

INCLUDEPATH += E:\Qt_stuff\ncreport\include\
HEADERS  += mainform.h
FORMS    += mainform.ui
win32 {
   LIBS += E:\Qt_stuff\ncreport\lib\ncreport2.dll          // тут, кстати, в Гайде, было написано ncreport2.lib  
                                                                         //никакого .lib в NCReport нету - есть dll
}
unix {
LIBS += -lncreport -L../lib -L/usr/local/bin
         target.path = /usr/local/bin
}
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Litkevich Yuriy
  опции профиля:
сообщение 15.12.2009, 21:20
Сообщение #2


разработчик РЭА
*******

Группа: Сомодератор
Сообщений: 9669
Регистрация: 9.1.2008
Из: Тюмень
Пользователь №: 64

Спасибо сказали: 807 раз(а)




Репутация:   94  


Цитата(bayah @ 15.12.2009, 23:00) *
LIBS += E:\Qt_stuff\ncreport\lib\ncreport2.dll // тут, кстати, в Гайде, было написано ncreport2.lib
//никакого .lib в NCReport нету - есть dll
по правильному вообще не так писать надо, т.к. оба варианта не кросплатформены. Писать надо так:
LIBS += -lncreport2

Ну а пути по факту, например:
#------------- 3rdparty -------------------------
INCLUDEPATH       +=    E:\Qt_stuff\include
QMAKE_LIBDIR   +=    E:\Qt_stuff\ncreport\lib
LIBS           +=  -lncreport2

Я предпочитаю через переменную окружения (например, LIBS), показывающую на каталог с разными сторонними библиотеками, например:
#------------- 3rdparty -------------------------
INCLUDEPATH       +=    $$(LIBS)/ncreport/include
QMAKE_LIBDIR   +=    $$(LIBS)/ncreport/lib
LIBS           +=  -lncreport2
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
DIMEDROLL
  опции профиля:
сообщение 16.12.2009, 9:21
Сообщение #3


Участник
**

Группа: Участник
Сообщений: 165
Регистрация: 28.9.2008
Из: Киев
Пользователь №: 304

Спасибо сказали: 23 раз(а)




Репутация:   0  


помоему проблема в том что дллка ncreport2.dll не подключается в приложение, и когда ты вызываешь
NCReport *report = new NCReport();

у тебя происходит исключение которое ты не ловишь, а ловит его Кьют и молчит себе :-)
нужно явно загружать дллку ncreport2.dll = гуглить по __declspec( dllimport ), вот
ну или средствами Кьют, если это возможно?!
вообще ко всем дллкам обычно идут lib файлики, что б не парится потом с dllimport :)
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
bayah
  опции профиля:
сообщение 23.12.2009, 11:03
Сообщение #4


Студент
*

Группа: Участник
Сообщений: 31
Регистрация: 23.11.2009
Пользователь №: 1249

Спасибо сказали: 0 раз(а)




Репутация:   0  


Не выходит.
А вот так написано в manual'e к NCReportu:

3.8 Integrating NCReport into application
3.8.1 Adding NCReport to your application
For using NCReport from your application, first you have to integrate NCReport into your application
project. There are at least two ways to do this:
• Adding the whole sources statically to your project and build it together with your application. In
this case you don’t need NCReport shared libraries. Doing so open your .pro project file and add
the full source package to the project as testapp/testapp.pro does.
• Using NCReport engine as shared library. For using NCReport library like other libraries in your
project you need to specify them in your project file.
The following project example shows the neccessary settings:

QT = xml sql gui core
TEMPLATE = app
CONFIG += warn_on \
qt \
thread \
release
TARGET = MyApplication
INCLUDEPATH = ../ncreport/includes
HEADERS += ...
SOURCES += ...
win32 {
LIBS += ../lib/ncreport2.lib
}
unix {
LIBS += -lncreport -L../lib -L/usr/local/bin
target.path = /usr/local/bin
}


For more informations see the Qt documentation in qmake manual at chapter Declaring Other Libraries.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
aliks-os
  опции профиля:
сообщение 8.5.2012, 13:18
Сообщение #5


Студент
*

Группа: Новичок
Сообщений: 11
Регистрация: 7.4.2010
Пользователь №: 1603

Спасибо сказали: 0 раз(а)




Репутация:   0  


Может кто поделить работающей версией NCReport, желательно посвежее...и с исходниками
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение

Быстрый ответОтветить в данную темуНачать новую тему
Теги
Нет тегов для показа


1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0




RSS Текстовая версия Сейчас: 1.2.2023, 12:43