From: Andrew H. <an...@gm...> - 2011-04-03 17:58:35
|
Hey all. I'm trying to compile the most recent development branch, but I'm getting the following error: In member function ‘virtual void bwm_plane_fitting_lsf::f(const vnl_vector<double>&, vnl_vector<double>&)’: contrib/brl/bbas/bwm/algo/bwm_plane_fitting_lsf.cxx:19: error: invalid use of incomplete type ‘struct vsol_point_2d’ contrib/gel/vsol/vsol_point_2d_sptr.h:9: error: forward declaration of ‘struct vsol_point_2d’ make[2]: *** [contrib/brl/bbas/bwm/algo/CMakeFiles/bwm_algo.dir/bwm_plane_fitting_lsf.o] Error 1 make[1]: *** [contrib/brl/bbas/bwm/algo/CMakeFiles/bwm_algo.dir/all] Error 2 make: *** [all] Error 2 Any ideas what I should do to fix this? System: Ubuntu 10.10, gcc 4.4.5, GNU make 3.81, cmake 2.8.2 (any other information I should include?) Thanks! Andrew |
From: Peter V. <pet...@ya...> - 2011-04-03 20:31:42
|
Around line 6 of contrib/brl/bbas/bwm/algo/bwm_plane_fitting_lsf.cxx, add #include <vsol/vsol_point_2d.h> -- Peter. I'm trying to compile the most recent development branch, but I'm getting the following error: In member function ‘virtual void bwm_plane_fitting_lsf::f(const vnl_vector<double>&, vnl_vector<double>&)’: contrib/brl/bbas/bwm/algo/bwm_plane_fitting_lsf.cxx:19: error: invalid use of incomplete type ‘struct vsol_point_2d’contrib/gel/vsol/vsol_point_2d_sptr.h:9: error: forward declaration of ‘struct vsol_point_2d’ make[2]: *** [contrib/brl/bbas/bwm/algo/CMakeFiles/bwm_algo.dir/bwm_plane_fitting_lsf.o] Error 1make[1]: *** [contrib/brl/bbas/bwm/algo/CMakeFiles/bwm_algo.dir/all] Error 2 make: *** [all] Error 2 Any ideas what I should do to fix this? System: Ubuntu 10.10, gcc 4.4.5, GNU make 3.81, cmake 2.8.2 (any other information I should include?) Thanks!Andrew |
From: Andrew H. <an...@gm...> - 2011-04-04 03:22:01
|
Man, I'm not sure what I'm doing wrong with this. First of all, adding the include fixed the initial problem (thanks, Peter). Sadly, I got another error saying that stddev is undefined on line 450 of brl/bbas/bwm/exe/bwm_bundler_to_video_site.cxx. The line is a print statement, so I tried commenting it out. This seemed to work well, but... Now I'm getting yet another error, this time in the linking stage for bwm_main (copy-paste of the message at the end). Sorry to keep bothering everyone with this. Is there something wrong with my system setup that could be causing these errors? Linking CXX executable bwm_main ../../../../../lib/libbwm.a(bwm_site_mgr.o): In function `bwm_site_mgr::create_site()': bwm_site_mgr.cxx:(.text+0x1fc5): undefined reference to `bwm_process::StartBackgroundTask()' ../../../../../lib/libbwm.a(bwm_site_mgr.o): In function `bwm_site_mgr::edit_site()': bwm_site_mgr.cxx:(.text+0x3456): undefined reference to `bwm_process::StartBackgroundTask()' ../../../../../lib/libbwm.a(bwm_site_mgr.o): In function `bwm_site_process::bwm_site_process()': bwm_site_mgr.cxx:(.text._ZN16bwm_site_processC1Ev[bwm_site_process::bwm_site_process()]+0xf): undefined reference to `bwm_process::bwm_process()' bwm_site_mgr.cxx:(.text._ZN16bwm_site_processC1Ev[bwm_site_process::bwm_site_process()]+0x18): undefined reference to `vtable for bwm_site_process' bwm_site_mgr.cxx:(.text._ZN16bwm_site_processC1Ev[bwm_site_process::bwm_site_process()]+0x97): undefined reference to `bwm_process::~bwm_process()' ../../../../../lib/libbwm.a(bwm_site_mgr.o): In function `bwm_site_process::~bwm_site_process()': bwm_site_mgr.cxx:(.text._ZN16bwm_site_processD1Ev[bwm_site_process::~bwm_site_process()]+0xd): undefined reference to `vtable for bwm_site_process' bwm_site_mgr.cxx:(.text._ZN16bwm_site_processD1Ev[bwm_site_process::~bwm_site_process()]+0x54): undefined reference to `bwm_process::~bwm_process()' bwm_site_mgr.cxx:(.text._ZN16bwm_site_processD1Ev[bwm_site_process::~bwm_site_process()]+0x6b): undefined reference to `bwm_process::~bwm_process()' collect2: ld returned 1 exit status Thanks! Andrew On Sun, Apr 3, 2011 at 4:31 PM, Peter Vanroose <pet...@ya...>wrote: > Around line 6 of contrib/brl/bbas/bwm/algo/bwm_plane_fitting_lsf.cxx, add > #include <vsol/vsol_point_2d.h> > > -- Peter. > > > I'm trying to compile the most recent development branch, but I'm getting > the following error: > > In member function ‘virtual void bwm_plane_fitting_lsf::f(const > vnl_vector<double>&, vnl_vector<double>&)’: > contrib/brl/bbas/bwm/algo/bwm_plane_fitting_lsf.cxx:19: error: invalid use > of incomplete type ‘struct vsol_point_2d’ > contrib/gel/vsol/vsol_point_2d_sptr.h:9: error: forward declaration of > ‘struct vsol_point_2d’ > make[2]: *** > [contrib/brl/bbas/bwm/algo/CMakeFiles/bwm_algo.dir/bwm_plane_fitting_lsf.o] > Error 1 > make[1]: *** [contrib/brl/bbas/bwm/algo/CMakeFiles/bwm_algo.dir/all] Error > 2 > make: *** [all] Error 2 > > Any ideas what I should do to fix this? > > System: Ubuntu 10.10, gcc 4.4.5, GNU make 3.81, cmake 2.8.2 (any other > information I should include?) > > Thanks! > Andrew > > > > > > > > > > > |
From: Peter V. <pet...@ya...> - 2011-04-04 06:35:35
|
Andrew, One of recent the commits apparently broke that file. So it's certainly nothing to do with your setup. I've now added the function stddev() to core/vgl/vgl_point_3d, which solves your first problem. I've no idea about what might cause the second problem (bwm_process unresolved symbols). -- Peter. Sadly, I got another error saying that stddev is undefined on line 450 of brl/bbas/bwm/exe/bwm_bundler_to_video_site.cxx. The line is a print statement, so I tried commenting it out. This seemed to work well, but... Now I'm getting yet another error, this time in the linking stage for bwm_main (copy-paste of the message at the end). Sorry to keep bothering everyone with this. Is there something wrong with my system setup that could be causing these errors? Linking CXX executable bwm_main ../../../../../lib/libbwm.a(bwm_site_mgr.o): In function `bwm_site_mgr::create_site()':bwm_site_mgr.cxx:(.text+0x1fc5): undefined reference to `bwm_process::StartBackgroundTask()' ../../../../../lib/libbwm.a(bwm_site_mgr.o): In function `bwm_site_mgr::edit_site()':bwm_site_mgr.cxx:(.text+0x3456): undefined reference to `bwm_process::StartBackgroundTask()' ../../../../../lib/libbwm.a(bwm_site_mgr.o): In function `bwm_site_process::bwm_site_process()':bwm_site_mgr.cxx:(.text._ZN16bwm_site_processC1Ev[bwm_site_process::bwm_site_process()]+0xf): undefined reference to `bwm_process::bwm_process()' bwm_site_mgr.cxx:(.text._ZN16bwm_site_processC1Ev[bwm_site_process::bwm_site_process()]+0x18): undefined reference to `vtable for bwm_site_process' bwm_site_mgr.cxx:(.text._ZN16bwm_site_processC1Ev[bwm_site_process::bwm_site_process()]+0x97): undefined reference to `bwm_process::~bwm_process()' ../../../../../lib/libbwm.a(bwm_site_mgr.o): In function `bwm_site_process::~bwm_site_process()':bwm_site_mgr.cxx:(.text._ZN16bwm_site_processD1Ev[bwm_site_process::~bwm_site_process()]+0xd): undefined reference to `vtable for bwm_site_process' bwm_site_mgr.cxx:(.text._ZN16bwm_site_processD1Ev[bwm_site_process::~bwm_site_process()]+0x54): undefined reference to `bwm_process::~bwm_process()' bwm_site_mgr.cxx:(.text._ZN16bwm_site_processD1Ev[bwm_site_process::~bwm_site_process()]+0x6b): undefined reference to `bwm_process::~bwm_process()' collect2: ld returned 1 exit status |
From: Andrew H. <an...@gm...> - 2011-04-04 16:04:01
|
So, I took a closer look at the CMakeList.txt, and I think I have an idea of what the problem might be. bwm_site_mgr depends on process/bwm_site_process and process/bwm_process, however, the cxx files for these classes are only built if the user has MFC. I'm not sure what MFC is, but I don't think I have it. Here are the relevant lines from the CMakeList.txt: IF(MFC_FOUND) # add stuff to use MFC in this executable ADD_DEFINITIONS( "-D_AFXDLL" ) SET(CMAKE_MFC_FLAG 2) SET(bwm_sources ${bwm_sources} process/bwm_process.cxx process/bwm_process.h process/bwm_site_process.cxx process/bwm_site_process.h ) ENDIF(MFC_FOUND) bwm_site_mgr.h is included regardless of MFC_FOUND, though it does depend on the existence of EXPAT, EXPATPP and SHAPELIB (again, not sure what any of those are). IF(EXPAT_FOUND) IF(EXPATPP_FOUND) INCLUDE_DIRECTORIES (${EXPAT_INCLUDE_DIRS} ) INCLUDE_DIRECTORIES (${EXPATPP_INCLUDE_DIRS} ) IF(SHAPELIB_FOUND) ADD_DEFINITIONS( -DHAS_SHAPELIB=1 ) INCLUDE_DIRECTORIES( ${BRL_INCLUDE_DIR}/b3p/shapelib) SET(bwm_sources ${bwm_sources} bunches of stuff, including bwm_site_mgr.h ) ENDIF(SHAPELIB_FOUND) ENDIF(EXPATPP_FOUND) ENDIF(EXPAT_FOUND) So, my questions are, am I right in my guesses about the dependency order, would getting MFC fix the problem, if so, what is MFC, and how do I get it? -Andrew On Mon, Apr 4, 2011 at 2:35 AM, Peter Vanroose <pet...@ya...>wrote: > Andrew, > > One of recent the commits apparently broke that file. So it's certainly > nothing to do with your setup. > I've now added the function stddev() to core/vgl/vgl_point_3d, which solves > your first problem. > I've no idea about what might cause the second problem (bwm_process > unresolved symbols). > > -- Peter. > > Sadly, I got another error saying that stddev is undefined on line 450 of > brl/bbas/bwm/exe/bwm_bundler_to_video_site.cxx. The line is a print > statement, so I tried commenting it out. This seemed to work well, but... > > Now I'm getting yet another error, this time in the linking stage for > bwm_main (copy-paste of the message at the end). > > Sorry to keep bothering everyone with this. Is there something wrong with > my system setup that could be causing these errors? > > Linking CXX executable bwm_main > ../../../../../lib/libbwm.a(bwm_site_mgr.o): In function > `bwm_site_mgr::create_site()': > bwm_site_mgr.cxx:(.text+0x1fc5): undefined reference to > `bwm_process::StartBackgroundTask()' > ../../../../../lib/libbwm.a(bwm_site_mgr.o): In function > `bwm_site_mgr::edit_site()': > bwm_site_mgr.cxx:(.text+0x3456): undefined reference to > `bwm_process::StartBackgroundTask()' > ../../../../../lib/libbwm.a(bwm_site_mgr.o): In function > `bwm_site_process::bwm_site_process()': > bwm_site_mgr.cxx:(.text._ZN16bwm_site_processC1Ev[bwm_site_process::bwm_site_process()]+0xf): > undefined reference to `bwm_process::bwm_process()' > bwm_site_mgr.cxx:(.text._ZN16bwm_site_processC1Ev[bwm_site_process::bwm_site_process()]+0x18): > undefined reference to `vtable for bwm_site_process' > bwm_site_mgr.cxx:(.text._ZN16bwm_site_processC1Ev[bwm_site_process::bwm_site_process()]+0x97): > undefined reference to `bwm_process::~bwm_process()' > ../../../../../lib/libbwm.a(bwm_site_mgr.o): In function > `bwm_site_process::~bwm_site_process()': > bwm_site_mgr.cxx:(.text._ZN16bwm_site_processD1Ev[bwm_site_process::~bwm_site_process()]+0xd): > undefined reference to `vtable for bwm_site_process' > bwm_site_mgr.cxx:(.text._ZN16bwm_site_processD1Ev[bwm_site_process::~bwm_site_process()]+0x54): > undefined reference to `bwm_process::~bwm_process()' > bwm_site_mgr.cxx:(.text._ZN16bwm_site_processD1Ev[bwm_site_process::~bwm_site_process()]+0x6b): > undefined reference to `bwm_process::~bwm_process()' > collect2: ld returned 1 exit status > > > > > > > > > > > > > |
From: Peter V. <pet...@ya...> - 2011-04-05 14:52:55
|
Andrew, I don't think that in your case MFC is an option: this is the "Microsoft Foundation Classes" (or something like this) layer, a (the) GUI implementation for MS Windows. I would guess that your compile and/or link errors are caused by, let's say, a not 100% robust build-setup (which is of course very difficult to achieve, given the fact that any of the possible dependencies could be present or not on a given client system). So the simplest way around the build problems would be to just disable all builds in those libraries/apps that give problems, and keep doing that until you get it building. In this respect, have a look at the various "BUILD_*" settings in the CMakeCache.txt file in your build directory (and set the relevant ones to "OFF", e.g. BUILD_BRL). Unless of course you wanted to use the functionality in one particular library; in that case you need to (wait for someone to) remove all unnecessary MFC (or other) dependencies, possibly replacing it by something equivalent. HTH, -- Peter. --- On monday 2011-04-04 Andrew Hoelscher <an...@gm...> writes : So, I took a closer look at the CMakeList.txt, and I think I have an idea of what the problem might be. bwm_site_mgr depends on process/bwm_site_process and process/bwm_process, however, the cxx files for these classes are only built if the user has MFC. I'm not sure what MFC is, but I don't think I have it. Here are the relevant lines from the CMakeList.txt: IF(MFC_FOUND) # add stuff to use MFC in this executable ADD_DEFINITIONS( "-D_AFXDLL" ) SET(CMAKE_MFC_FLAG 2) SET(bwm_sources ${bwm_sources} process/bwm_process.cxx process/bwm_process.h process/bwm_site_process.cxx process/bwm_site_process.h )ENDIF(MFC_FOUND) bwm_site_mgr.h is included regardless of MFC_FOUND, though it does depend on the existence of EXPAT, EXPATPP and SHAPELIB (again, not sure what any of those are). IF(EXPAT_FOUND) IF(EXPATPP_FOUND) INCLUDE_DIRECTORIES (${EXPAT_INCLUDE_DIRS} ) INCLUDE_DIRECTORIES (${EXPATPP_INCLUDE_DIRS} ) IF(SHAPELIB_FOUND) ADD_DEFINITIONS( -DHAS_SHAPELIB=1 ) INCLUDE_DIRECTORIES( ${BRL_INCLUDE_DIR}/b3p/shapelib) SET(bwm_sources ${bwm_sources} bunches of stuff, including bwm_site_mgr.h ) ENDIF(SHAPELIB_FOUND) ENDIF(EXPATPP_FOUND)ENDIF(EXPAT_FOUND) So, my questions are, am I right in my guesses about the dependency order, would getting MFC fix the problem, if so, what is MFC, and how do I get it? -Andrew |