Ubuntu12.04 64 编译 vrippack

vrippack  是一款对 一组 range image 进行 volumetrically merging 的软件, 该软件基于一种新的表面重建的方法 (A Volumetric Method for Building Complex Models from Range Images, Proceedings of SIGGRAPH96))。 

在Linux上编译遇到一些问题,现将编译过程和解决方法进行介绍。

1. 下载 VripPack 文件包  http://grail.cs.washington.edu/software-data/vrip/

     vrippack-0.31.tgz    

2.下载 依赖包 TCL/TK 库文件  http://www.tcl.tk/software/tcltk/8.5.html

  在这里我们下载的  tcl8517-src.zip 和 tk8517-src.zip

3. 将 tcl8517-src.zip 和 tk8517-src.zip 进行解压,并按找ReadMe中的说明进行编译,和安装。 

   默认的安装 引用路径是 /usr/local/include/tcl8.5 /usr/local/include/tk8.5 

                      库文件 /usr/local/lib/ libtcl8.5.so lictk8.5.so

   执行 sudo ln -s /usr/local/lib/libtcl8.5.so /usr/lib/ libtcl.so

           sudo ln -s /usr/local/lib/libtk8.5.so /usr/lib/ libtk.so

    并将 tcl.h  tclDecls.h  tclPlatDecls.h  tk.h tkDecls.h 拷贝到 src/vrip中 (也可以在Makefile 中 添加相关路径)

4. 解压vrippack-0.31.tgz    并将文件夹重命名为 vrippack。

5. cd vrippack

    make clobber

    make depend 

    此处 如果出现 没有makedep的命令,执行 sudo apt-get install makedepend 安装该命令。

   make

正常情况下,执行该步完成后,src/vrip/ 中 出现 vrip 和 vriphead两个可执行文件,则编译成功.

编译过程中遇到三位问题:

1. plytool/ plyvolume.cc   出现指针和int型数据无法强制转化的错误

64位机器上 指针是8字节,int 是4字节直接将指针赋值给int型会出错误

将 line 62 

#define voffset(field) ((int) &(((PlyVertex *) 0)->field))
#define foffset(field) ((long) &(((PlyFace *) 0)->field))

改为:

#define voffset(field) ((long) &(((PlyVertex *) 0)->field))
#define foffset(field) ((long) &(((PlyFace *) 0)->field))

2.  martch/ 下出现 libmcfile.a 不兼容的问题

  原因是编译之前 libmcfile.a没有被删除, 删除后重新编译问题解决。

3. vrip 下 vripGridCmds.cc 

 vrippack 默认的是 tcl8.4 和 tk 8.4

 tcl 8.5 和 tk8.5 版本以下两个函数发生变化。

将文件vripGridCmds.cc 中所有的

Tk_PhotoSetSize( hande, xdim, ydim);

Tk_PhotoPutBlock(hadle, &blcok, 0, 0, xdim, ydim, TK_PHOTO_COMPOSITE_SET);  

改成

Tk_PhotoSetSize(NULL, hande, xdim, ydim);

Tk_PhotoPutBlock(NULL, hadle, &blcok, 0, 0, xdim, ydim, TK_PHOTO_COMPOSITE_SET);  


另外还需要特别注意的是 tk8.5 和 tcl 8.5中的关于包含文件和 库文件的路径配置。


你可能感兴趣的:(Ubuntu12.04 64 编译 vrippack)