平台: 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 代码调试的更多相关文章

  1. 三维重建项目:Photo Tourism: Exploring Photo Collections in 3D

    项目地址:http://phototour.cs.washington.edu/ Photo Tourism是华盛顿大学的SFM重建的过程 Paper:Photo Tourism: Exploring ...

  2. 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 ...

  3. Mongoid Paging and Iterating Over Large Collections

    遍历数据库中的所有记录时,我们首先想到的是Model.all.each.但是,当数据量很大的时候(数万?),这就不怎么合适了,因为Model.all.each会一次性加载所有记录,并将其实例化成 Mo ...

  4. 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 ...

  5. Guava 教程1-使用 Google Collections,Guava,static imports 编写漂亮代码

    原文出处: oschina (API:http://ifeve.com/category/framework/guava-2/ JAR DOC Source 链接:http://pan.baidu.c ...

  6. 类Collections的静态方法的使用(代码)

    package cn.itcast.p2.toolclass.collections.demo; import java.util.ArrayList; import java.util.Collec ...

  7. webstorm的live templates快速编辑功能,让你的css JS代码书写速度飞起来

    前言: Emmet的前身是大名鼎鼎的Zen coding,如果你从事Web前端开发的话,对该插件一定不会陌生.它使用仿CSS选择器的语法来生成代码, 大大提高了HTML/CSS代码编写的速度,比如下面 ...

  8. Introduction to statistical learning:with Applications in R (书,数据,R代码,链接)

    http://faculty.marshall.usc.edu/gareth-james/ http://faculty.marshall.usc.edu/gareth-james/ISL/

  9. 20155316 2016-2017-2 《Java程序设计》第2周学习总结

    教材学习内容总结 学习主要内容:基本类型介绍及流程控制简介 关键点:关键记住JAVA的大体框架,可以类比C语言结合着记.相较于C不同且值得关注的主要信息有: 基本类型的不同:byte.boolean. ...

随机推荐

  1. Go基础之--反射

    反射:可以在运行时动态获取变量的相关信息 反射需要导入reflect 反射中重要函数的演示 反射有几下几个重要的函数:reflect.TypeOf :获取变量的类型,返回reflect.Type类型r ...

  2. zzcms8.2#任意用户密码重置#del.php时间盲注#复现

    00x0 引言 早上起来,发现seebug更新了一批新的洞, 发现zzcms8.2这个洞好多人在挖,于是我就默默的踏上了复现之路(要不是点进去要买详情,我何必这么折腾~) 环境:zzcms8.2(产品 ...

  3. python函数4种类型及函数生成帮助文档

    Pyouthon中函数参数是引用传递(注意不是值传递). 对于不可变类型,因变量不能修改,所以运算不会影响到变量自身: 而对于可变类型来说,函数体中的运算有可能会更改传入的参数变量. a += a   ...

  4. ionic2+Angular 组件(多个组件)浅谈

    第一步,新建组件: ionic g component product-img-list 命令执行成功之后项目中生成的文件: 第二步:生成文件解析: ①product-img-list.ts impo ...

  5. zabbix server总是stoped,找到此方法解决了问题

    zabbix日志报错: One child process died (PID:8885,exitcode/signal:1). Exiting ... syncing history data... ...

  6. 04-PHP-redis

    [Redis] 先安装tcl: yum install tcl   [下载和安装] 官网http://redis.io/  下载最新的稳定版本,这里是3.2.0, 然后解压文件并进入. $ sudo ...

  7. 自制PHP高防防盗链(不是一般的高)(思路)

    原理:根据IP,资源ID,时间戳,一次性Access_Token,APPKEY(暴露在前台)和APPSERECT(后台)来生成参数,具体见下面: 浏览器请求页面=>后台引用防盗链代码=>生 ...

  8. Appium基于Python unittest自动化测试 & 自动化测试框架 -- PO并生成html测试报告

    基于python单元测试框架unittest完成appium自动化测试,生成基于html可视化测试报告 代码示例: #利用unittest并生成测试报告 class Appium_test(unitt ...

  9. python并发编程之多进程(二):互斥锁(同步锁)&进程其他属性&进程间通信(queue)&生产者消费者模型

    一,互斥锁,同步锁 进程之间数据不共享,但是共享同一套文件系统,所以访问同一个文件,或同一个打印终端,是没有问题的, 竞争带来的结果就是错乱,如何控制,就是加锁处理 part1:多个进程共享同一打印终 ...

  10. C# 使用AngleSharp 爬虫图片

    AngleSharp 简介 AngleSharp是基于.NET(C#)开发的专门解析HTML源码的DLL组件.根据HTML的DOM结构操作HTML,整个DOM已传输到逻辑类结构中.这种结构可以更好的操 ...