Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > С/С++: Кроссплатформенное программирование, Qt/Gtk+/wxWidgets > Coin3d, Quarter vs QtCreator


Автор: Mormishka 6.8.2011, 14:36
Пыьаюсь подключить библиотеку Quarter, для того чтобы исплоьзовать coin3d и qt вместе.

Код


#include <QtGui/QApplication>

#include <Inventor/nodes/SoBaseColor.h>
#include <Inventor/nodes/SoCone.h>
#include <Inventor/nodes/SoSeparator.h>

#include <Quarter/Quarter.h>
#include <Quarter/QuarterWidget.h>

using namespace SIM::Coin3D::Quarter;

int
main(int argc, char ** argv)
{
  QApplication app(argc, argv);
  // Initializes Quarter library (and implicitly also the Coin and Qt
  // libraries).
  Quarter::init();

  // Make a dead simple scene graph by using the Coin library, only
  // containing a single yellow cone under the scenegraph root.
  SoSeparator * root = new SoSeparator;
  root->ref();

  SoBaseColor * col = new SoBaseColor;
  col->rgb = SbColor(1, 1, 0);
  root->addChild(col);

  root->addChild(new SoCone);

  // Create a QuarterWidget for displaying a Coin scene graph
  QuarterWidget * viewer = new QuarterWidget;
  viewer->setSceneGraph(root);

  // make the viewer react to input events similar to the good old
  // ExaminerViewer
  viewer->setNavigationModeFile(QUrl("coin:///scxml/navigation/examiner.xml"));

  // Pop up the QuarterWidget
  viewer->show();
  // Loop until exit.
  app.exec();
  // Clean up resources.
  root->unref();
  delete viewer;

  Quarter::clean();

  return 0;
}


//#include <QtCore/QCoreApplication>

//int main(int argc, char *argv[])
//{
//    QCoreApplication a(argc, argv);

//    return a.exec();
//}

Пишет

Код

C:\Program Files\Microsoft SDKs\Windows\v6.0A\include\Inventor\C\basic.h:288: ошибка: C1189: #error:  Define either COIN_DLL or COIN_NOT_DLL as appropriate for your linkage! See Inventor/C/basic.h for further instructions.


Вот что написано в basic.h

Код

  On MSWindows platforms, one of these defines must always be set when
  building application programs:

   - "COIN_DLL", when the application programmer is using the library
     in the form of a dynamic link library (DLL)

   - "COIN_NOT_DLL", when the application programmer is using the
     library in the form of a static object library (LIB)

  Note that either COIN_DLL or COIN_NOT_DLL _must_ be defined by the
  application programmer on MSWindows platforms, or else the #error
  statement will hit. Set up one or the other of these two defines in
  your compiler environment according to how the library was built --
  as a DLL (use "COIN_DLL") or as a LIB (use "COIN_NOT_DLL").

  (Setting up defines for the compiler is typically done by either
  adding something like "/DCOIN_DLL" to the compiler's argument line
  (for command-line build processes), or by adding the define to the
  list of preprocessor symbols in your IDE GUI (in the MSVC IDE, this
  is done from the "Project"->"Settings" menu, choose the "C/C++" tab,
  then "Preprocessor" from the dropdown box and add the appropriate
  define)).



Автор: bsa 8.8.2011, 12:12
И в чем проблема? Открой *.pro файл и добавь:
Код
DEFINES += COIN_DLL

Автор: kemiisto 10.9.2011, 11:51
Точнее
Код

DEFINES += COIN_DLL \
        SIMAGE_DLL \
        QUARTER_DLL

simage используется для подгрузки текстур. Кстати, сборка под MSVC10 достаточно нетривиальная. Бинарники на оф.сайте только под MSVC9. А я как раз сейчас решил перелезть на Coin... Так что ежели кому надо - http://narod.ru/disk/24619573001/Coin-4.0.0-Quarter-1.0.0-simage-1.7.1-vc10.7z.html. Положить куда-нить и добавить путь в переменную COINDIR (например, c:\Coin3D). Ещё при сборке Quarter понадобилось создать переменную QTDIR с путём (например, c:\Qt\qt-4.7.4). Qt 4.7.4 был предварительно собран из исходников.

Автор: W4FhLF 11.9.2011, 09:44
Цитата(kemiisto @  10.9.2011,  11:51 Найти цитируемый пост)
А я как раз сейчас решил перелезть на Coin...


Пользовал Coin два года назад. Сейчас вот смотрю, какой-то мёртвый он совсем стал. Почему не VTK?

Автор: kemiisto 11.9.2011, 11:53
Цитата(W4FhLF @  11.9.2011,  08:44 Найти цитируемый пост)
Сейчас вот смотрю, какой-то мёртвый он совсем стал.

Если каждый день не комитят, так сразу "мёртвый"? Пока везде собирается. Что ещё надо?

Цитата(W4FhLF @  11.9.2011,  08:44 Найти цитируемый пост)
Почему не VTK?

Потому что не VTK. 

P.S. Он ещё и от Kitware. Фу!

Автор: W4FhLF 11.9.2011, 13:54
Цитата(kemiisto @  11.9.2011,  11:53 Найти цитируемый пост)
Если каждый день не комитят, так сразу "мёртвый"? 


За последние два года был лишь один минорный релиз. При том, что два года назад мне много чего не хватало в этой либе. Точнее там есть только базовый функционал, если требуется реализовать что-то своё, то придётся попотеть. Ясно, что GPL и требовать тут что-то неприлично. 

Цитата(kemiisto @  11.9.2011,  11:53 Найти цитируемый пост)
Что ещё надо?


Не то, чтобы надо, но желательно нормальную документацию, примеры. Насчёт коммьюнити не знаю, может там в мэйлиниг-листах жизнь теплится. 

Автор: kemiisto 11.9.2011, 14:08
Цитата(W4FhLF @  11.9.2011,  12:54 Найти цитируемый пост)
При том, что два года назад мне много чего не хватало в этой либе.

Мне хватает.

Цитата(W4FhLF @  11.9.2011,  12:54 Найти цитируемый пост)
Точнее там есть только базовый функционал, если требуется реализовать что-то своё, то придётся попотеть.

Я до этого писал на чисотм OpenGL. И хватало. Та что "базового" функционала Coin3D более чем достаточно.

Цитата(W4FhLF @  11.9.2011,  12:54 Найти цитируемый пост)
Не то, чтобы надо, но желательно нормальную документацию, примеры.

Ну не знаю. Нормальные там доки. И книга даже есть. The Inventor Mentor. Всё понятно. Смысла изучать ещё одну библиотеку? Я эту год уже ковыряю.

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