ubuntu 安装vtk-8.2.0问题
VTK安装包是在官网下载的,在make编译过程中,遇到这两个问题:
1、error multiple definition of `exodus_unused_symbol_dummy_1`
2、error aggregate ‘QPainterPath path’ has incomplete type and cannot be defined
针对error1的解决方案
1. error1: multiple definition of `exodus_unused_symbol_dummy_1`
需要对安装包里面的2个文件进行修改。
1.1 文件1路径:VTK-8.2.0/ThirdParty/exodusII/vtkexodusII/src/ex_create_par.c
在最后一行,修改如下:
//const char exodus_unused_symbol_dummy_1; 这是原文件中的内容;
const char exodus_unused_symbol_dummy_ex_create_par; //修改为这行代码
1.2 文件2路径:VTK-8.2.0/ThirdParty/exodusII/vtkexodusII/src/ex_open_par.c
在最后一行,修改如下:
//const char exodus_unused_symbol_dummy_1; 这是原文件的代码
const char exodus_unused_symbol_dummy_ex_open_par; //修改为这个
1.3 (可选)文件3路径:VTK-8.2.0/ThirdParty/exodusII/update.sh
参考里面提到了需要对此文件中的修改。在文件的第10行:
//readonly tag="for/vtk-20191230-7.24f-v2019-12-18" //这是原代码
readonly tag="for/vtk-20200128-7.24f-v2019-12-18" //修改为这行代码
我只修改了前两个文件,并没有修改第3个文件,重新make编译发现不报error1的错误,但出现了下面error2的错误。
针对error2的解决方案:
2. error2: aggregate ‘QPainterPath path’ has incomplete type and cannot be defined
这个问题解决相对简单,只需要对两个文件修改
2.1 文件1路径: VTK-8.2.0/Rendering/Qt/vtkQtLabelRenderStrategy.cxx
在文件中的头文件位置处加入"#include <QPainterPath>"后保存即可
/*
#include <QImage>
#include <QMap>
#include <QPainter>
*/
#include <QPainterPath>//复制这行代码添加到文件中即可
/*
#include <QPair>
#include <QPixmap>
#include <QTextDocument>
*/
2.2 文件2路径: VTK-8.2.0/Rendering/Qt/vtkQtStringToImage.cxx
在文件中的头文件位置处加入"#include <QPainterPath>"后保存即可
/*
#include <QFontMetrics>
#include <QImage>
#include <QPainter>
*/
#include <QPainterPath>//加入这行代码即可
/*
#include <QPixmap>
#include <QString>
#include <QTextDocument>
*/
做完以上这些再次重新编译make可以发现100%完成。
最后记得sudo make install,便可以在usr/local/include和usr/local/lib 都可以找到已经完成安装的vtk。
参考:
[1] Exodus gcc 10 support (!6420) · Merge requests · VTK / VTK · GitLab
[2] Qt 5.15 needs the include file QPainterPath (797f2869) · Commits · VTK / VTK · GitLab