collada-dom-2.2 Boost Dependences

What i have:
Microsoft Visual C++ 2008 Express Edition
collada-dom-2.2.zip

What i need:
Use collada static lib in my project.

I read “DOM guide: Setting up” and did what they said.
But i had problen when i try to use it(#include <dae.h> #include <dom/domCOLLADA.h>).

first:

>D:\JAre\MD\Visual Studio 2008\Projects\Test\collada-dom\dom\include\dae.h(28) : fatal error C1083: Cannot open include file: ‘boost/filesystem/convenience.hpp’: No such file or directory

ok - i add “\dom\external-libs\boost” to Additional include directories but now it wants “boost/version.hpp”

I copied it from the “boost” site and add to “dom\external-libs\boost\boost”

And finaly it requests “libboost_filesystem-vc90-mt-1_37.lib”

Probably exactly I did something wrong. Help me, please :roll:

PS. In the “DOM guide: Setting up” we must build libcollada14dom22-s.lib (release) or libcollada14dom22-sd.lib (debug) but i had only libcollada15dom21-s.lib

My project settings:

Maybe i need right “version.hpp” ?

I renamed files in a folder “dom\external-libs\boost\lib\vc9” as linker wants and add it to the project dependencies. I am not sure that it is a correct way ->

Error 3 error LNK2001: unresolved external symbol “public: __thiscall daeZAEUncompressHandler::daeZAEUncompressHandler(class daeURI const &)” (??0daeZAEUncompressHandler@@QAE@ABVdaeURI@@@Z) libcollada15dom21-s.lib
Error 2 error LNK2001: unresolved external symbol “public: class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > const & __thiscall daeZAEUncompressHandler::obtainRootFilePath(void)” (?obtainRootFilePath@daeZAEUncompressHandler@@QAEABV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@XZ) libcollada15dom21-s.lib
Error 1 error LNK2001: unresolved external symbol “public: virtual __thiscall daeZAEUncompressHandler::~daeZAEUncompressHandler(void)” (??1daeZAEUncompressHandler@@UAE@XZ) libcollada15dom21-s.lib

:roll:

dll correctly work in my project, but it still needed to include boost (Manual has not this point) and i still can’t understand how to link static lib.

is anyone alive here ?

To build your static COLLADA-DOM lib, you’ll need to

  1. add “…\external-libs\boost” (or the correct path to dom\external-libs\boost) to Additional include directories of your application project file, this was already included in the dom-static project file.

  2. define “BOOST_ALL_NO_LIB” in Preprocessor Definitions of your application project file. This was already included in the dom-static project file. See the following explaination:

// BOOST_ALL_NO_LIB: Tells the config system not to automatically select
// which libraries to link against.
// Normally if a compiler supports #pragma lib, then the correct library
// build variant will be automatically selected and linked against,
// simply by the act of including one of that library’s headers.
// This macro turns that feature off.
// #define BOOST_ALL_NO_LIB

http://www.boost.org/doc/libs/1_38_0/bo … g/user.hpp

  1. add the following two static boost libs to the Linker Additional Dependencies of your app project file

libboost_filesystem.lib
libboost_system.lib

These two libs are included in collada-dom-2.2, so the users do not need to download boost themselves

PS. In the “DOM guide: Setting up” we must build libcollada14dom22-s.lib (release) or libcollada14dom22-sd.lib (debug) but i had only libcollada15dom21-s.lib

Regarding the colladadom version issue (i.e. 21 or 22), the dom package 2.2 was released without the dom project file updated to the new file name (libcollada15dom22-s.lib). You can just use libcollada15dom21-s.lib, or modify the output name in the dom-static project file to libcollada15dom22-s.lib, or sync with the latest collada-dom from

https://collada-dom.svn.sourceforge.net/svnroot/collada-dom/trunk/dom

thank you, errors log is much more shorter now.

libcollada15dom22-sd.lib(daeIOPluginCommon.obj) : error LNK2019: unresolved external symbol “public: virtual __thiscall daeZAEUncompressHandler::~daeZAEUncompressHandler(void)” (??1daeZAEUncompressHandler@@UAE@XZ) referenced in function “public: virtual int __thiscall daeIOPluginCommon::read(class daeURI const &,char const *)” (?read@daeIOPluginCommon@@UAEHABVdaeURI@@PBD@Z)

1>libcollada15dom22-sd.lib(daeIOPluginCommon.obj) : error LNK2019: unresolved external symbol “public: class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > const & __thiscall daeZAEUncompressHandler::obtainRootFilePath(void)” (?obtainRootFilePath@daeZAEUncompressHandler@@QAEABV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@XZ) referenced in function “public: virtual int __thiscall daeIOPluginCommon::read(class daeURI const &,char const *)” (?read@daeIOPluginCommon@@UAEHABVdaeURI@@PBD@Z)

1>libcollada15dom22-sd.lib(daeIOPluginCommon.obj) : error LNK2019: unresolved external symbol “public: __thiscall daeZAEUncompressHandler::daeZAEUncompressHandler(class daeURI const &)” (??0daeZAEUncompressHandler@@QAE@ABVdaeURI@@@Z) referenced in function “public: virtual int __thiscall daeIOPluginCommon::read(class daeURI const &,char const *)” (?read@daeIOPluginCommon@@UAEHABVdaeURI@@PBD@Z)

i downloaded viewer from https://collada-dom.svn.sourceforge.net … dom/trunk/ And built it. After that i linked libcollada14dom22-sd.lib to my project and it is finally working! :slight_smile:

Thank you for your patience.

PS. “DOM guide: Setting up” manual is trash

Working static lib project settings include this strings:

DOM_INCLUDE_LIBXML
PCRE_STATIC

“dae.h” started to include libboost header file with the ZAE feature implementation in September 2008.

I updated “DOM guide: Setting up” to include the steps necessary to include libboost in one’s project.

Thanks for the input.

You can fix your “unresolved external symbol” errors by opening the dom-static project and adding daeZAEUncompressHandler.cpp to the Source Files folder. Then recompile the project. It appears they simply forgot to include that file in the project even though it clearly exists in the source directory.

I just installed Boost 1.38.

I would like to use the most recent boost libraries.

I am using MSVC9.

I have tried to simply use the projects included with the Collada DOM 2.2 download. However, if I don’t use the boost libraries included with Collada I get unresolved externals for both libraries. If I use the libraries included with Collada I get multiply defined symbols.

My only choice seems to alter the included msvc projects to use my release of the boost libraries so that there are no conflicts.

Can you add instructions for those who already have boost installed which may or may not be a different version that of the boost libraries included with Collada DOM 2.2?

In my case the dom-static project compiled perfectly but the libraries have proven to be unusable along side boost version 1.38, the current latest version.

Please consider my case as I suspect it is a general problem.

If you already have Boost installed and would like to use the release you have without conflicts elsewhere in your project or if you wish to use a newer version of the Boost libraries than is packaged with Collada DOM 2.2 you may with MSVS with the following instructions.

You must compile Collada DOM 2.2 against the release of the Boost libraries you have installed.

To do this you must change some project property settings. The directions are the same for release and debug configurations.

  1. Remove the preprocessor directive: BOOST_ALL_NO_LIB
  2. Remove additional include directory: …\external-libs\boost
  3. Remove additional library directory: …\external-libs\boost\lib\vc9 (or vc8 etc.)
  4. Remove the Linker Additional Dependencies: libboost_filesystem.lib;libboost_system.lib (-d variants for debug)

So long as MSVS is aware of your Boost installation Collada DOM 2.2 will compile against the release of Boost you have installed.

!!! Run the domTest’s !!!

If all test’s pass then everything is fine. If any of the tests fail you can recompile Collada DOM 2.2 with the Boost libraries included with it. However, any projects using Collada DOM 2.2 and Boost will now have to compile and link against the libraries included with Collada DOM 2.2 instead of those installed with your own Boost release. In other words, your project will have to conform to the project settings for compiling Collada DOM 2.2.

Hi. I’m having some trouble setting up collada dom.
Perhaps someone can offer some suggestions?
I’m using Microsoft Visual C++ 2005

I tried static linking as per the “DOM guide: Setting up” and the various instructions in this thread. I gave up.

Now I’d settle gladly for dynamic linking and shipping the libcollada14dom21.dll with the applications.
I included

#include <dae.h>
and
#include <dom/domCOLLADA.h>
and

I get the following error
collada-dom-2.2\collada-dom\dom\external-libs\boost\boost/config/auto_link.hpp(93) : fatal error C1083: Cannot open include file: ‘boost/version.hpp’: No such file or directory.

version.hpp doesn’t exist.

If I get it off the link JAre posted I get the same message he did:
libboost_filesystem-vc90-mt-1_37.lib

I mean no harm. I just want to be able to parse Collada files.

Should I try FCollada instead? I don’t even know where to get it.

Please dispense some advice.

another option could be OpenCOLLADA (Stream/SAX based parsing, faster, no memory consumption) available at
http://sf.net/projects/opencollada
There is no boost dependency for the parsing part required.

FCOLLADA (DOM based, slower, more memory consumption) is available at
http://sf.net/projects/colladamaya

Sebastian

I must be missing something. There doesn’t appear to be any downloadable content.
http://sourceforge.net/projects/opencollada/files/

I keep getting these two linking errors. I did everything as per the DOM guide.

1>libboost_system.lib(error_code.obj) : error LNK2019: unresolved external symbol __imp__strerror referenced in function "public: virtual class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > __thiscall `anonymous namespace'::posix_error_category::message(int)const " (?message@posix_error_category@?A0xc21e9867@@UBE?AV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@H@Z)

and

1>libboost_system.lib(error_code.obj) : error LNK2019: unresolved external symbol __imp___invalid_parameter_noinfo referenced in function "public: virtual class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > __thiscall `anonymous namespace'::system_error_category::message(int)const " (?message@system_error_category@?A0xc21e9867@@UBE?AV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@H@Z)

Any advice, someone?

Ok. I replaced

BOOST_ALL_NO_LIB
PCRE_STATIC
DOM_INCLUDE_LIBXML

with

DOM_DYNAMIC

in c++ - preprocessor - preprocessor definitions

and

libcollada14dom21-s.lib

with

libcollada14dom21.lib

in Linker - Input - Additional Dependencies

Still get

fatal error C1083: Cannot open include file: 'boost/version.hpp': No such file or directory	F:\Work_Aerrevan\collada-dom-2.2\collada-dom\dom\external-libs\boost\boost\config\auto_link.hpp	93

Any advice, please?

Could anyone at least tell me what version of boost collada dom 2.2 uses? So I can manually edit the version.hpp file?

I keep getting

1>LINK : fatal error LNK1104: cannot open file 'libboost_filesystem-vc80-mt-s-1_37.lib'

If I manually edit the version.hpp file to version 1.36 I get

1>LINK : fatal error LNK1104: cannot open file 'libboost_filesystem-vc80-mt-s-1_36.lib'

I have no libboost_filesystem-*.lib file on my drive.

[Admin: expletive deleted]

It there http://opencollada.svn.sourceforge.net/ … ada/trunk/ but it is not easy to find.

You also don’t need Boost to build the DOM.
Add -DNO_BOOST to your build.