bundler_sfm icon indicating copy to clipboard operation
bundler_sfm copied to clipboard

Cannot build in Visual Studio 2013

Open albertcheng opened this issue 10 years ago • 10 comments

:( It will be awesome if we can have a Visual Studio 2013 compatible .sln file to be more compatible.

albertcheng avatar Dec 30 '14 07:12 albertcheng

Hi Albert,

Joaquin Salas was kind enough to share some instructions for compiling in Windows. If you implement this, please feel free to share a patch:

Download Blunder from

https://github.com/snavely/bundler_sfm

To compile Bundler v0.4 in Visual Studio 2013 Ultimate C++, I corrected several of the compilation errors using the following sources and changes

  1. change
    inline to __inline

in matrix.h

  1. I found a set of solutions for the following problems in http://blog.csdn.net/azkabannull/article/details/7872958

a. rename files

sysdep1.h0 to sysdep1.h signal1.h0 to signal1.h

in lib/f2c

b. create the file arith.h using the following lines

#define IEEE_8087 #define Arith_Kind_ASL 1 #define largo int #define Intcast (int) (largo) #define Double_Align #define X64_bit_pointers #define QNaN0 0x0 #define QNaN1 0xfff80000

place the newly created arith.h in lib/f2c

c. rename mkdir a _mkdir in Bundle2PMVS.cpp, and add the line at the top of the file #include <direct.h>

Also, eliminate the second parameter

from _mkdir(output_path, 0770); to _mkdir(output_path);

d. In the file RadialUndistort.cpp

change the lines

char *space = index(buf, ' ');
if (space) *space = 0; files.push_back(std::string(buf));

to

std::string str(buf); int space_pos = str.find(' '); str.at(space_pos) = 0; files.push_back(str);

  1. in the file filter.c

comment the entire definition for the static double erf (double x)

function.

  1. In the file KeyMatchFull.cpp

include the file

#include

to use the max function

  1. in the files TwoFrameModel.cpp and BundleAdd.cpp comment the line

//#define isnan _isnan

  1. For each project add /FS

project-> properties -> Configuration properties ->C/C++ ->Command Line -> Additional Options

just as it is explained in http://msdn.microsoft.com/en-us/library/dn502518.aspx

  1. Add
    ..\lib\jpeg\src

in the RadialUndistort project

project->properties -> C/C++ -> Additional Include Directories

snavely avatar Jan 01 '15 22:01 snavely

Thanks! I am giving it a shot now. Re: patch, how to do a patch? I think some of the changes may cause build error for earlier compilers.

albertcheng avatar Jan 02 '15 00:01 albertcheng

KeyMatchFull should include <"algorithm">

albertcheng avatar Jan 02 '15 03:01 albertcheng

for me, adding /FS imposes no change of the error message pattern. I ended up following this post http://stackoverflow.com/questions/20643370/visual-studio-2013-fatal-error-c1041-fs

and changed the configuration of the intermediate directory for impacted projects.

albertcheng avatar Jan 02 '15 03:01 albertcheng

I can compile it now with over 743 warnings :$

albertcheng avatar Jan 02 '15 06:01 albertcheng

Any chance of using #defines to make this compile on both Linux and Windows?

Noah

On Fri, Jan 2, 2015 at 1:12 AM, albertcheng [email protected] wrote:

I can compile it now with over 743 warnings :$

— Reply to this email directly or view it on GitHub https://github.com/snavely/bundler_sfm/issues/26#issuecomment-68510328.

snavely avatar Jan 02 '15 06:01 snavely

error C1083: Unable to open source file: “..\src\SifterUtil.cpp”: No such file or directoryG:\bundler_sfm-master\vc++\c1xx Bundler How Can I fix it?

jiaojialulu avatar Apr 22 '16 02:04 jiaojialulu

The error "Unable to open source file: “..\src\SifterUtil.cpp”" is caused by filename replacement(SfiterUtil->BundleUtil). Solution: Before open bundle.sln, open Bundler.vcproj and replace SifterUtil.cpp/h to BundleUtil.cpp/h

lshGame avatar Feb 23 '17 13:02 lshGame

Thanks! Do you want to submit a patch?

On Thu, Feb 23, 2017 at 5:48 AM lshGame [email protected] wrote:

The error "Unable to open source file: “..\src\SifterUtil.cpp”" is caused by filename replacement(SfiterUtil->BundleUtil). Solution: Before open bundle.sln, open Bundler.vcproj and replace SifterUtil.cpp/h to BundleUtil.cpp/h

— You are receiving this because you commented.

Reply to this email directly, view it on GitHub https://github.com/snavely/bundler_sfm/issues/26#issuecomment-281995743, or mute the thread https://github.com/notifications/unsubscribe-auth/ABt6qzCpq3NkgQp_cR2fRW18SNw916_Oks5rfY5JgaJpZM4DNGyF .

--


Noah Snavely Associate Professor Email: [email protected] Dept. of Computer Science Phone: (607) 255 4280 Cornell University URL : www.cs.cornell.edu/~snavely 307 Gates Hall Ithaca, NY 14853

snavely avatar Feb 23 '17 14:02 snavely

Hi When I tried to build imagelib in separately project, I didn't see some header files such as "dmap.h" and "error.h", which are included in some file in imagelib source code? I also received some error such as when I tried to build clapack lib, compiler said that some function such as "double sqrt(doublereal), s_cat" can not find the implementation of its?

sieubebuvietnam avatar Mar 23 '17 04:03 sieubebuvietnam