Библиотека vtkCharts не работает ни с Visual Studio, ни с компилятором GCC. Почему? - PullRequest
1 голос
/ 19 июня 2011

Я новичок в vtk и хочу использовать библиотеку vtkCharts.Как в Linux, так и в Windows я скомпилировал vtk и смог работать с большинством примеров.

Единственными проблемными примерами являются библиотеки графиков, например, приведенная в ссылке:

Пример линейного графика

Когда я компилирую, в Visual Studio выдает некоторые ошибки компоновки.Сегмент ниже.Я не забыл включить библиотеку vtkCharts.

1> vtkCharts.lib (vtkContextView.obj): ошибка LNK2019: неразрешенный внешний символ "protected: виртуальный __thiscall vtkRenderView :: ~ vtkRenderView (void)"(?? 1vtkRenderView @@ MAE @ XZ), на который ссылается функция" protected: virtual __thiscall vtkContextView :: ~ vtkContextView (void) "(?? 1vtkContextView @@ MAE @ XZ) 1> vtkCharts.lib (vtkContextView.obj): ошибкаLNK2019: неразрешенный внешний символ «public: virtual void __thiscall vtkRenderView :: SetDisplayHoverText (bool)» (? SetDisplayHoverText @ vtkRenderView @@ UAEX_N @ Z), на который есть ссылка в функции «protected: __thiscall vtkContextView :: vtkContext :: vtkConte (vtkConte)»@ IAE @ XZ) 1> vtkCharts.lib (vtkContextView.obj): ошибка LNK2019: неразрешенный внешний символ «protected: __thiscall vtkRenderView :: vtkRenderView (void)» (?? 0vtkRenderView @@ IAE @ XZ), ссылка на который защищена:__thiscall vtkContextView :: vtkContextView (void) "(?? 0vtkContextView @@ IAE @ XZ) 1> vtkCharts.lib (vtkContextView.obj): ошибкаLNK2001: неразрешенный внешний символ "public: virtual void __thiscall vtkView :: Update (void)" (? Update @ vtkView @@ UAEXXZ) 1> vtkCharts.lib (vtkContextView.obj): ошибка LNK2001: неразрешенный внешний символ "public: virtual void__thiscall vtkRenderView :: ApplyViewTheme (класс vtkViewTheme *) "(? ApplyViewTheme @ vtkRenderView @@ UAEXPAVvtkViewTheme @@@ Z) 1> vtkCharts.lib (vtkContextView.obj): ошибка LNK2001: неразрешенный виртуальный символ vk: нерешенный виртуальный символ __: защищенный внешний виртуальный символ __ProcessEvents (класс vtkObject *, unsigned long, void *) "(? ProcessEvents @ vtkRenderView @@ MAEXPAVvtkObject @@ KPAX @ Z) * ​​1012 *

В Code :: Blocks, используя GCC, он выдает подобные ошибки:

. / VTK-build / VTK-5.6 / VTK / Charts / vtkChart.h | 38 | ошибка: ожидаемое имя класса перед маркером {{'|../VTK-build/VTK-5.6/VTK/Charts/vtkChart.h|40|error: 'vtkContextItem' не называет тип |../VTK-build/VTK-5.6/VTK/Charts/vtkChart.h|40|error: 'vtkContextItem' не был объявлен |../VTK-build/VTK-5.6/VTK/Charts/vtkChart.h|40|error: недопустимый static_cast из типа 'vtkObjectBase *' для типа 'vtkChart *' |../VTK-build/VTK-5.6/VTK/Charts/vtkChart.h||В функции-члене 'virtual vtkObjectBase * vtkChart :: NewInstanceInternal () const': |../VTK-build/VTK-5.6/VTK/Charts/vtkChart.h|40|error: «New» не является членом «vtkChart» |../VTK-build/VTK-5.6/VTK/Charts/vtkChart.h||В функции-члене 'virtual vtkAnnotationLink * vtkChart :: GetAnnotationLink ()': |../VTK-build/VTK-5.6/VTK/Charts/vtkChart.h|104|error: 'class vtkChart' не имеет члена с именем 'GetDebug' |../VTK-build/VTK-5.6/VTK/Charts/vtkChart.h|104|error: 'class vtkChart' не имеет члена с именем 'GetClassName' |../VTK-build/VTK-5.6/VTK/Charts/vtkChart.h|104|error: 'class vtkChart' не имеет члена с именем 'GetClassName' |../VTK-build/VTK-5.6/VTK/Charts/vtkChart.h||В функции-члене 'virtual void vtkChart :: SetGeometry (int, int)': |../VTK-build/VTK-5.6/VTK/Charts/vtkChart.h|108|error: 'class vtkChart' не имеет члена с именем 'GetDebug' |../VTK-build/VTK-5.6/VTK/Charts/vtkChart.h|108|error: 'class vtkChart' не имеет члена с именем 'GetClassName' |../VTK-build/VTK-5.6/VTK/Charts/vtkChart.h|108|error: 'class vtkChart' не имеет члена с именем 'GetClassName' |../VTK-build/VTK-5.6/VTK/Charts/vtkChart.h|108|error: 'class vtkChart' не имеет члена с именем 'Modified' |../VTK-build/VTK-5.6/VTK/Charts/vtkChart.h||В функции-члене 'virtual int * vtkChart :: GetГеометрия ()»: | ../VTK-build/VTK-5.6/VTK/Charts/vtkChart.h|109|error: У класса vtkChart нет члена с именем «GetDebug» | ../VTK-build/VTK-5.6/VTK/Charts/vtkChart.h|109|error: У класса vtkChart нет члена с именем «GetClassName» | ../VTK-build/VTK-5.6/VTK/Charts/vtkChart.h|109|error: У класса vtkChart нет члена с именем «GetClassName» | ../VTK-build/VTK-5.6/VTK/Charts/vtkChart.h||In функция-член ‘виртуальная пустота vtkChart :: GetGeometry (int &, int &) ’: | ../VTK-build/VTK-5.6/VTK/Charts/vtkChart.h|109|error: У класса vtkChart нет члена с именем «GetDebug» |

Я использую vtk 5-6 на обеих платформах. Мне интересно, почему эта ошибка может возникнуть.

Спасибо.

1 Ответ

1 голос
/ 19 июня 2011

Я не забыл включить библиотеку vtkCharts.

Тогда вы, вероятно, забыли включить библиотеку vtkHybrid. Обратите внимание на последнюю строку в файле cmake.

...