Learning part-based templates from large collections of 3D shapse CorrsTmplt Kim 代码调试
平台: VMware上装的Ubuntu-15.10
环境准备工作:装Fortran, lapack, blas, cblas (理论上装好lapack后面两个应该是自动的),其他的有需要的随时安装就可以
===== 开始编译 =====
cd到CorrsTmplt的目录
1. sleep的error
在命令行执行
make
此时,出现error
FileManagement.cpp:25:25: error: ‘sleep’ was not declared in this scope
sleep(checkEveySeconds);
解决方案:在FileManagement.cpp文件的引用中加入
#include <unistd.h>
保存后再次 make
出现类似的错误:
LinAlg.cpp:41:25: error: ‘sleep’ was not declared in this scope
sleep(checkEveySeconds);
道理是一样的,找到LinAlg.cpp文件,在引用中加入
#include <unistd.h>
保存后再次make
2. stderr,fprintf was not declared
这次make后出现了新的错误:
LinAlgMatrixComplex.cpp:340:11: error: ‘stderr’ was not declared in this scope
fprintf(stderr, "[ERROR] Error solving system of equations: %d\n", info);
这个也不难,找到LinAlgMatrixComplex.cpp文件,在引用中加入
#include <stdio.h>
保存后,make
3. NULL was not declared
make后出现新的错误:
VKGraph.h:60:51: error: ‘NULL’ was not declared in this scope
找到VKGraph.h,在引用中加入
#include <cstdlib>
保存后,继续make
4. fopen, fwrite... was not declared in this scope
make后出现了新的error,好开心哦~!
Clustering.cpp:118:36: error: ‘fopen’ was not declared in this scope
找到Clustering.cpp, 在引用中加入
#include <stdio.h>
保存后,接着make
(不是在make就是在走向make的路上,且make且珍惜。。。)
5. 找不到类型
make后出现如下error
GCoptimization.h:389:16: error: ‘ptrdiff_t’ does not name a type
找到GCoptimization.h,在引用部分(不是文件头部哦,在靠近中间的地方)加入
#include <cstddef>
保存后,继续make
6. add_edge, add_tweights was not declared in this scope
当然不会这么简单让你make成功啦~~这次又出现了长成下面这个样子的一系列error:
energy.h:220:14: error: ‘add_tweights’ was not declared in this scope
不要怕!打开energy.h
把所有的 add_edge 都替换成 this->add_edge
把所有的 add_tweights 都替换成 this->add_tweights
注意,已经有this->就不要再加了哦~
保存后,make
又来error
energy.h:328:89: error: ‘what_segment’ was not declared in this scope
哦,有漏网之鱼啊,找到这一行,在what_segment前面加上this-> 变成this->what_segment
保存,继续make吧~~
7. redeclaration
新的error
VisModel3D.cpp:378:7: error: redeclaration of ‘int matID’
这个简单,找到那一行,注释掉就行
保存,继续make
8. redeclaration
出现error:
VisShapeTemplateDraw.cpp:594:12: error: redeclaration of ‘R3Point p’
找到这个文件的594行,
原来是长这样:
R3Point p = pnts->PointPosition(gid); model2cam.Apply(tpnt);
model2cam.Apply(p); glColor3d(., ., .);
glVertex3d(p.X(), p.Y(), p.Z());
glColor3d(., ., .);
glVertex3d(tpnt.X(), tpnt.Y(), tpnt.Z());
edges.push_back(tpnt);
edges.push_back(p);
把p替换成point,修改后长这样:
R3Point point = pnts->PointPosition(gid); model2cam.Apply(tpnt);
model2cam.Apply(point); glColor3d(.2, .2, .2);
glVertex3d(point.X(), point.Y(), point.Z());
glColor3d(.2, 1., .2);
glVertex3d(tpnt.X(), tpnt.Y(), tpnt.Z());
edges.push_back(tpnt);
edges.push_back(point);
注意,594行之前的p不要替换哦~
保存后,接着make
9. 各种undefined references to ...
这时候似乎出现了逆天的bug...前方一大波undefined reference to...向我走来,伦家好害怕!!
这个error可能长这样:
ShapePointCloud.cpp:(.text+0xfc9): undefined reference to `R3Vector::Length() const'
实际上会有更多的这个link error,仔细观察一下,发现这些link error都是发生在对R3***或者相关的引用上面。
R3***在什么地方呢?找一下,发现它们在/external/gaps/pkgs 中,由于某种不可知的原因,这些东西似乎木有编译成功。。
阅读一下gaps目录下的README.txt,上面告诉我们可以在这个目录下进行一下make。试一下~~
cd 到 CorrsTmplt/external/gaps ,先后执行:
make clean
make
再回到CorrsTmplt目录下,make一下
到这里,编译就已经结束了……那是不可能滴。
革命尚未成功。。。继续
10. error: expected type-specifier
保证这是最后一个error哈~~
这次make后那一大堆莫名其妙的undefined reference已经没有了,但是出现了下面的error
EvalCorrs.cpp:113:27: error: expected type-specifier
EvalCorrs.cpp:340:27: error: expected type-specifier
你以为这样就会击垮我吗?Naive~~
打开EvalCorrs.cpp,找到113行和340行
把
ModelDatabase * db = new ModelDatabase::ModelDatabase();
替换成
ModelDatabase * db = new ModelDatabase();
保存,make
yeah~~~居然没有error了??哈哈,这样整个编译就结束啦~~
打开CorrsTmplt/bin/x86_64,可以看到9个可执行文件,说明编译成功啦。

下一步就是要怎么使用这份源码了,会用了再来写~!
Learning part-based templates from large collections of 3D shapse CorrsTmplt Kim 代码调试的更多相关文章
- 三维重建项目:Photo Tourism: Exploring Photo Collections in 3D
项目地址:http://phototour.cs.washington.edu/ Photo Tourism是华盛顿大学的SFM重建的过程 Paper:Photo Tourism: Exploring ...
- Look Further to Recognize Better: Learning Shared Topics and Category-Specific Dictionaries for Open-Ended 3D Object Recognition
张宁 Look Further to Recognize Better: Learning Shared Topics and Category-Specific Dictionaries for O ...
- Mongoid Paging and Iterating Over Large Collections
遍历数据库中的所有记录时,我们首先想到的是Model.all.each.但是,当数据量很大的时候(数万?),这就不怎么合适了,因为Model.all.each会一次性加载所有记录,并将其实例化成 Mo ...
- Learning ROS: Roslaunch tips for large projects
Design tip: Top-level launch files should be short, and consist of include's to other files correspo ...
- Guava 教程1-使用 Google Collections,Guava,static imports 编写漂亮代码
原文出处: oschina (API:http://ifeve.com/category/framework/guava-2/ JAR DOC Source 链接:http://pan.baidu.c ...
- 类Collections的静态方法的使用(代码)
package cn.itcast.p2.toolclass.collections.demo; import java.util.ArrayList; import java.util.Collec ...
- webstorm的live templates快速编辑功能,让你的css JS代码书写速度飞起来
前言: Emmet的前身是大名鼎鼎的Zen coding,如果你从事Web前端开发的话,对该插件一定不会陌生.它使用仿CSS选择器的语法来生成代码, 大大提高了HTML/CSS代码编写的速度,比如下面 ...
- Introduction to statistical learning:with Applications in R (书,数据,R代码,链接)
http://faculty.marshall.usc.edu/gareth-james/ http://faculty.marshall.usc.edu/gareth-james/ISL/
- 20155316 2016-2017-2 《Java程序设计》第2周学习总结
教材学习内容总结 学习主要内容:基本类型介绍及流程控制简介 关键点:关键记住JAVA的大体框架,可以类比C语言结合着记.相较于C不同且值得关注的主要信息有: 基本类型的不同:byte.boolean. ...
随机推荐
- React ref回调函数例子
ref属性也可以是一个回调函数而不是一个名字. 这个函数将要在组件被挂载之后立即执行. 这个参照的组件将会作为该函数的参数,这个函数可以立即使用这个组件参数,当然也可以将其保存供以后使用. 当这个 ...
- 利用GUID唯一标识符并设置它的过期时间
项目中遇到一个小问题,就是把服务器创建的GUID发送给客户端,客户端接收后,下次访问时带上这个GUID, 服务端这边就进行验证,并做相应的处理. 问题是:项目中还需要这个GUID带过期时间,那是如何设 ...
- 什么是 lnmp 实现原理。
LNMP代表的就是:Linux系统下Nginx+MySQL+PHP这种网站服务器架构. Linux是一类Unix计算机操作系统的统称,是目前最流行的免费操作系统.代表版本有:debian.centos ...
- 一、scrapy的下载安装---Windows(安装软件太让我伤心了)
写博客就和笔记一样真的很有用,你可以随时的翻阅.爬虫的爬虫原理与数据抓取.非结构化与结构化数据提取.动态HTML处理和简单的图像识别已经学完,就差整理博客了 开始学习scrapy了,所以重新建了个分类 ...
- C++函数返回值发生的对象复制
最近用QT做一个监控系统的项目,需要显示目标的运动轨迹,每次目标移动后,就在目标的轨迹中(用vector记录)添加一条新轨迹. 但是在运行中画面里一直不出现轨迹,经过调试发现是记录轨迹的函数出错了. ...
- ajax常用操作
load的方法的使用(现在已不常用) <!doctype html><html lang="en"><head> <meta charse ...
- TJ4运行环境
http://springwq2011.blog.51cto.com/4332889/966028 http://blog.csdn.net/u013573789/article/details/45 ...
- bcache的使用
一.前提:内核中需要配置bcache模块 1.1 检查 - 是否存在于内核中:检查/sys/fs/bcache目录是否存在,没有说明内核中没有bcache - 是否以内核模块方式存在:检查/lib/m ...
- 知识点干货--讲一讲final、finally、finalize的区别
"横看成岭侧成峰,远近高低各不同.不识庐山真面目,只缘身在此山中." 这首诗来自于宋朝苏轼<题西林壁>,它的意思是,庐山从正面看,它是一道道连绵起伏的山岭:从侧面看,它 ...
- centos/linux下的安装Maven
1.保证该项目安装了JDK 请在系统中输入java -version查看该命令是否存在 如果没有安装JDK请移步到Centos/linux下的JDK安装 2.下载Maven wget http://m ...