VS2010+Windows7编译Bundler
来源:互联网 发布:淘宝网上买电视可靠吗 编辑:程序博客网 时间:2024/06/14 17:21
首先下载Bundler源码
目前最新下载 https://github.com/snavely/bundler_sfm
项目主页 http://www.cs.cornell.edu/~snavely/bundler/
用VS2010打开生成解决方案后会有许多错误
1、error C1083: 无法打开包括文件:“sysdep1.h”: No such file or directory
在E:\github\bundler_sfm-master\lib\f2c目录下将sysdep1.h0文件名修改为sysdep1.h即可,同时将signal1.h0文件名修改为signal1.h
2、 error C1083: 无法打开包括文件:“arith.h”: No such file or directory
这时可以在E:\github\bundler_sfm-master\lib\f2c目录下新建一个arith.h文件,在文件里添加如下内容即可:
#define IEEE_8087 #define Arith_Kind_ASL 1 #define Long int #define Intcast (int)(long) #define Double_Align #define X64_bit_pointers #define QNaN0 0x0 #define QNaN1 0xfff80000
3、修改matrix中个四个内联函数,编译器的问题,内联函数可能不能够识别。改成普通的c的定义实现的方式。
matrix.h文件中改为
void matrix_product33(double *A, double *B, double *R); void matrix_product121(double *A, double *b, double *r);void matrix_product131(double *A, double *b, double *r);void matrix_product331(double *A, double *b, double *r);
matrix.c中添加
void matrix_product33(double *A, double *B, double *R){ R[0] = A[0] * B[0] + A[1] * B[3] + A[2] * B[6]; R[1] = A[0] * B[1] + A[1] * B[4] + A[2] * B[7]; R[2] = A[0] * B[2] + A[1] * B[5] + A[2] * B[8]; R[3] = A[3] * B[0] + A[4] * B[3] + A[5] * B[6]; R[4] = A[3] * B[1] + A[4] * B[4] + A[5] * B[7]; R[5] = A[3] * B[2] + A[4] * B[5] + A[5] * B[8]; R[6] = A[6] * B[0] + A[7] * B[3] + A[8] * B[6]; R[7] = A[6] * B[1] + A[7] * B[4] + A[8] * B[7]; R[8] = A[6] * B[2] + A[7] * B[5] + A[8] * B[8]; } void matrix_product121(double *A, double *b, double *r){ r[0] = A[0] * b[0] + A[1] * b[1]; }void matrix_product131(double *A, double *b, double *r){ r[0] = A[0] * b[0] + A[1] * b[1] + A[2] * b[2];}void matrix_product331(double *A, double *b, double *r){ r[0] = A[0] * b[0] + A[1] * b[1] + A[2] * b[2]; r[1] = A[3] * b[0] + A[4] * b[1] + A[5] * b[2]; r[2] = A[6] * b[0] + A[7] * b[1] + A[8] * b[2];}
4、error C1083: 无法打开包括文件:“jpeglib.h”: No such file or directory
在RadialUndistort项目属性->vc++目录->包含目录中添加jpeglib.h所在路径,我的是E:\3rdPart\bundler_sfm-master\bundler_sfm-master\lib\jpeg\src
5、error C2039: “_isnan”: 不是“std”的成员 e:\github\bundler_sfm-master\src\twoframemodel.cpp 402
去掉std::,c库中有这个isnan
6、在Bundle2PMVS.cpp文件中会出现错误error C3861: “mkdir”: 找不到标识符的错误。
在RadialUndistort.cpp文件中会出现error C3861: “index”: 找不到标识符的错误。
对于第一个错误的原因是:mkdir是Linux下创建目录的函数,需要两个参数,第一个是路径,第二个是权限。而Windows下则是使用_mkdir,只需要一个路径的参数,需要在文件的开头添加#include<direct.h>,同时将mkdir替换为_mkdir,如下所示:
//mkdir(output_path, 0770);_mkdir(output_path);
对于第二个错误的原因:index是Linux下查找字符串中第一个出现的指定字符的函数,Windows中没有这个函数。需要使用STL中string类的方法来完成这个工作。原先的代码如下所示:
//char *space = index(buf, ' ');//if (space) *space = 0;//files.push_back(std::string(buf));std::string str(buf);int space_pos = str.find(' ');str.at(space_pos) = 0;files.push_back(str);
下面就可以正确的编译整个项目了。
如果还会出现其他错误,可以清理解决方案,再重新生成。- VS2010+Windows7编译Bundler
- windows7 vs2010 编译tinyxml
- windows7 vs2010 编译winpcap
- windows7 vs2010编译boost_1.55
- windows7下实现Bundler并通过cygwin编译运行以及pmvs、cmvs的使用(2)
- 64位Windows7使用VS2010编译wxWidgets
- 64位Windows7使用VS2010编译wxWidgets
- 64位Windows7使用VS2010编译wxWidgets
- 如何编译安装Bundler
- 如何编译安装Bundler
- 如何编译安装Bundler
- bundler编译和配置
- 如何编译安装Bundler
- 如何编译安装Bundler
- 编译bundler的各种错误
- LibUSB-Win32 在Windows7上使用vs2010编译过程
- Bundler
- Bundler
- Angular开发者手册重点翻译之指令(一)
- http://mobile.51cto.com/iphone-283494.htm
- 网站分析工具的四重境界
- AMQP协议 中文版
- 《数据结构》实验三: 栈和队列实验
- VS2010+Windows7编译Bundler
- c++ exception实例
- xcode ARC forbids explicit message send of 'release'
- myeclipse10配置hiberate
- 面向过程和面向对象的区别
- 单链表实现栈
- 芯片加密技术浅谈
- Android Application-Telephony-RIL 2 PhoneApp
- Fragment(1)