snavely / bundler_sfm

Bundler Structure from Motion Toolkit
1.54k stars 482 forks source link

Cannot build in Visual Studio 2013 #26

Open albertcheng opened 9 years ago

albertcheng commented 9 years ago

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

snavely commented 9 years ago

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

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

albertcheng commented 9 years ago

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 commented 9 years ago

KeyMatchFull should include <"algorithm">

albertcheng commented 9 years ago

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 commented 9 years ago

I can compile it now with over 743 warnings :$

snavely commented 9 years ago

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 notifications@github.com 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.

jiaojialulu commented 8 years ago

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?

lshGame commented 7 years ago

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

snavely commented 7 years ago

Thanks! Do you want to submit a patch?

On Thu, Feb 23, 2017 at 5:48 AM lshGame notifications@github.com 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: snavely@cs.cornell.edu Dept. of Computer Science Phone: (607) 255 4280 Cornell University URL : www.cs.cornell.edu/~snavely 307 Gates Hall Ithaca, NY 14853

sieubebuvietnam commented 7 years ago

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?