From: <sr...@op...> - 2003-11-07 16:45:45
|
I've downloaded and built vxl 1.0.0 using CMake on W2K, all tests work fine. It seems that everything is OK with the library build. However, now I'm trying to use vxl in some small test projects of my own. I run into problems with multiple definitions at link time. The following links fine "right out of the box" (n special linker options): #include <vcl_iostream.h> main() { vcl_cout << "Hello world\n"; return 0; } When I include vnl_matrix.h, #include <vnl/vnl_matrix.h> main() { vnl_matrix<double> P(3,3); return 0; } I need to exclude libcpmtd.lib and libcmtd.lib, or else I get msvcprtd.lib(MSVCP60D.dll) : error LNK2005: "public: __thiscall std::ios_base::Init::Init(void)" (??0Init@ios_base@std@@QAE@XZ) already defined in libcpmtd.lib(iostream.obj) etc etc... Excluding libcpmtd.lib and libcmtd.lib, it links fine. Of course, trying to include both #include <vcl_iostream.h> #include <vnl/vnl_matrix.h> main() { vnl_matrix<double> P(3,3); vcl_cout << "Hello world\n"; return 0; } I either get multiple definitions (if I don't exclude the libraries) or unresolved externals (if I do exclude them). Can anybody help? Thanks in advance, Steve |
From: Andrew F. <aw...@ro...> - 2003-11-07 17:01:52
|
You need to set the "Code Generation" options in the build settings to be compatible with those used to build VXL. I'm not at my MSVC now so I can't check, but I suspect it will be Project->Settings->C/C++ Tab->Category: Code Generation->Use run-time library: Multithreaded DLL > -----Original Message----- > From: vxl...@li... > [mailto:vxl...@li...] On Behalf Of > sr...@op... > Sent: 07 November 2003 16:46 > To: vxl...@li... > Subject: [Vxl-users] Using VXL in a MSVS project > > > I've downloaded and built vxl 1.0.0 using CMake on W2K, all > tests work fine. It seems that everything is OK with the > library build. > > However, now I'm trying to use vxl in some small test > projects of my own. I run into problems with multiple > definitions at link time. > > The following links fine "right out of the box" (n special > linker options): > #include <vcl_iostream.h> > main() { > vcl_cout << "Hello world\n"; > return 0; > } > > > When I include vnl_matrix.h, > #include <vnl/vnl_matrix.h> > main() { > vnl_matrix<double> P(3,3); > return 0; > } > I need to exclude libcpmtd.lib and libcmtd.lib, or else I get > msvcprtd.lib(MSVCP60D.dll) : error LNK2005: "public: __thiscall > std::ios_base::Init::Init(void)" > (??0Init@ios_base@std@@QAE@XZ) already > defined in libcpmtd.lib(iostream.obj) > etc etc... Excluding libcpmtd.lib and libcmtd.lib, it links fine. > > Of course, trying to include both > #include <vcl_iostream.h> > #include <vnl/vnl_matrix.h> > main() { > vnl_matrix<double> P(3,3); > vcl_cout << "Hello world\n"; > return 0; > } > I either get multiple definitions (if I don't exclude the > libraries) or unresolved externals (if I do exclude them). > > Can anybody help? > > Thanks in advance, > > Steve > > > > > > ------------------------------------------------------- > This SF.net email is sponsored by: SF.net Giveback Program. > Does SourceForge.net help you be more productive? Does it > help you create better code? SHARE THE LOVE, and help us help > YOU! Click Here: http://sourceforge.net/donate/ > _______________________________________________ > Vxl-users mailing list > Vxl...@li... > https://lists.sourceforge.net/lists/listinfo/vxl-users > |
From: Ian S. <ian...@st...> - 2003-11-07 17:11:39
|
Steve This problem is due to VXL's default build is set to link against the multithreaded DLL versions of the MS-supplied standard library. The default settings in a MSVC DevStudio 6.0 are to link against the Single-threaded static linked standard libraries. The fact that Microsoft made this a compile time rather than link time option is annoying in the extreme. It can be dealt with by telling your code to build using the "Multithreaded DLL Debug" standard libraries for your own debug build, or "Multithreaded DLL" for your release build. In MSVC6.0 you can find it under Project->settings->C/C++->Code Generation->Use run-time library You should also link your own code's Debug build against the Debug build of VXL, and your code's Release build against one of the 3 other VXL builds. Ian. > -----Original Message----- > From: sr...@op... [mailto:sr...@op...] > Sent: Friday, November 07, 2003 4:46 PM > To: vxl...@li... > Subject: [Vxl-users] Using VXL in a MSVS project > > > I've downloaded and built vxl 1.0.0 using CMake on W2K, all > tests work fine. It seems that everything is OK with the > library build. > > However, now I'm trying to use vxl in some small test > projects of my own. I run into problems with multiple > definitions at link time. > > The following links fine "right out of the box" (n special > linker options): > #include <vcl_iostream.h> > main() { > vcl_cout << "Hello world\n"; > return 0; > } > > > When I include vnl_matrix.h, > #include <vnl/vnl_matrix.h> > main() { > vnl_matrix<double> P(3,3); > return 0; > } > I need to exclude libcpmtd.lib and libcmtd.lib, or else I get > msvcprtd.lib(MSVCP60D.dll) : error LNK2005: "public: __thiscall > std::ios_base::Init::Init(void)" > (??0Init@ios_base@std@@QAE@XZ) already > defined in libcpmtd.lib(iostream.obj) > etc etc... Excluding libcpmtd.lib and libcmtd.lib, it links fine. > > Of course, trying to include both > #include <vcl_iostream.h> > #include <vnl/vnl_matrix.h> > main() { > vnl_matrix<double> P(3,3); > vcl_cout << "Hello world\n"; > return 0; > } > I either get multiple definitions (if I don't exclude the > libraries) or unresolved externals (if I do exclude them). > > Can anybody help? > > Thanks in advance, > > Steve > > > > > > ------------------------------------------------------- > This SF.net email is sponsored by: SF.net Giveback Program. > Does SourceForge.net help you be more productive? Does it > help you create better code? SHARE THE LOVE, and help us help > YOU! Click Here: http://sourceforge.net/donate/ > _______________________________________________ > Vxl-users mailing list > Vxl...@li... > https://lists.sourceforge.net/lists/listinfo/vxl-users > |