Compiling 64-bit CppDOM

129 views
Skip to first unread message

Ebonair

unread,
May 3, 2012, 6:33:08 PM5/3/12
to vrjuggler-questions
I'm tying to install VRJuggler on Windows 7 64-bit, and am slowly
making my way through the list of dependencies. A problem has arisen
with CppDOM: the README states that building the 64-bit version
requires Visual Studio 2005.

I'm using MSVC 2010, and don't have access to 2005. Does anyone have
64-bit windows binaries of CppDOM that they would be willing to share?
As I understand it, my alternative would be to every other VRJuggler
dependency is compiled in 32-bit, and only create 32-bit executables.

Any help is greatly appreciated.

Patrick Hartling

unread,
May 4, 2012, 11:44:33 AM5/4/12
to vrjuggler...@googlegroups.com
The README should state that Visual C++ 8.0 (2005) *or newer* is needed.

Even if you had Visual C++ 8.0, you wouldn't be able to use a CppDOM build (32- or 64-bit) made with it if everything else you're using was built by Visual C++ 10. It's critical with C++ code to make sure that the compiler(s) used produce ABI-compatible code. With Visual C++, that has typically meant that all C++ code must be built with the same version.

-Patrick


--
Patrick Hartling
iOS Library Developer, T8 Webware

Ryan Pavlik

unread,
May 4, 2012, 12:09:08 PM5/4/12
to vrjuggler...@googlegroups.com
You actually need to make sure that every dep is built with the same version of visual studio - Microsoft changes the C++ ABI with each release.

Sounds like the readme is out of date - in any case, don't bother trying to get scons to work, it's a massive headache.  I have a branch of CPPDOM that uses a CMake build system that is much easier:  https://github.com/rpavlik/cppdom 

(If you're trying to build juggler 3.0.x and not master, you might also try my in-progress experimental cmake-based build of VR Juggler itself -  https://github.com/rpavlik/vrjuggler )

Also, there's nothing inherently wrong with using a 32-bit build on Win 7 64 - I do it every day. If your app doesn't need 64-bit, then depending on what other dependencies you have besides juggler, it might be more of a headache. (This is primarily the case only on Windows: most Linux software save for the proprietary stuff has long-since adjusted to 64-bit builds.)

(In case it helps to get started, I had whipped up an (untested) VC2010 32-bit build based on the above for a colleague recently - you can grab it here: http://minus.com/mLlzE8T5w/ )

Ryan

Ebonair

unread,
May 4, 2012, 12:44:02 PM5/4/12
to vrjuggler-questions
> The README should state that Visual C++ 8.0 (2005) *or newer* is needed.

Aha, that makes more sense!

> It's critical with C++ code to make sure that the compiler(s) used produce ABI-compatible code. With Visual C++, that has typically meant that all C++ code must be built with the same version.

Sounds good.

> Sounds like the readme is out of date - in any case, don't bother trying to
> get scons to work, it's a massive headache. I have a branch of CPPDOM that
> uses a CMake build system that is much easier: https://github.com/rpavlik/cppdom

Awesome - I'll check it out, since I have had no luck with scons so
far.

> (If you're trying to build juggler 3.0.x and not master, you might also try
> my in-progress experimental cmake-based build of VR Juggler itself - https://github.com/rpavlik/vrjuggler)
>
> Also, there's nothing inherently wrong with using a 32-bit build on Win 7
> 64 - I do it every day. If your app doesn't need 64-bit, then depending on
> what other dependencies you have besides juggler, it might be more of a
> headache. (This is primarily the case only on Windows: most Linux software
> save for the proprietary stuff has long-since adjusted to 64-bit builds.)

I'm going to keep trying for a 64-bit build, unless I find some
dependency I absolutely can't compile in 64-bit. I should probably
check that boost created 64-bit binaries for me...

> (In case it helps to get started, I had whipped up an (untested) VC2010
> 32-bit build based on the above for a colleague recently - you can grab it
> here:http://minus.com/mLlzE8T5w/)

Thank you very much! And thank you both for the informative replies!

Ebonair

unread,
May 4, 2012, 2:15:51 PM5/4/12
to vrjuggler-questions
I'm still having some difficulties here... I found this document in
the link R. Pavlik provided: https://github.com/rpavlik/cppdom/blob/master/cmake/README.markdown
However, I'm unsure about how to integrate the cmake module into the
VRJuggler build.


On the scons side of things, I'm using these commands:

set PYTHONPATH=C:\juggler_deps\scons-addons\src

"C:\juggler_deps\cppdom-1.2.0>"C:\Program Files (x86)\WorldViz
\Vizard4\bin\Script
s\scons" MSVC_VERSION=10.0 var_arch=x64

And I get this error:

Microsoft (R) Manifest Tool version 5.2.3790.2076
Copyright (c) Microsoft Corporation 2005.
All rights reserved.

build.win32\type-optimized--libtype-shared--arch-x64\cppdom
\cppdom-1_2_0.dll.manifest :
general error c1010070: Failed to load and parse the manifest. The
system cannot find the file specified.
scons: *** [build.win32\type-optimized--libtype-shared--arch-x64\cppdom
\cppdom-1_2_0.dll] Error 31
scons: building terminated because of errors.

The cppdom-1_2_0.dll file exists, but not cppdom-1_2_0.dll.manifest.
Will I be able to compile VRJuggler with the dll I have, or does this
manifest tool do something to finalize its creation?

Simon Su

unread,
May 4, 2012, 6:02:26 PM5/4/12
to vrjuggler...@googlegroups.com
Hi,

If you like to forgo the adventure in building 64 bit version of vrjuggler 3.0.0, you can have my binary with all the dependencies library. I have not fully tested it but I am able to run vrj-osg sample using the standalone.jconf file. 

It was built on w7 professional with vs2010.

Let me know.

Best
-simon


--
-simon

Ebonair

unread,
May 4, 2012, 6:52:26 PM5/4/12
to vrjuggler-questions
That would be awesome - I simply can't figure out what CppDOM wants of
me. I can send you an email with SFTP or Samba access details if you
like.

Simon Su

unread,
May 4, 2012, 7:07:25 PM5/4/12
to vrjuggler...@googlegroups.com
that would work.... I will rar them up together and upload it later this evening if you can email me the sftp access, I am late for my badminton.. :)

In the nutshell, vrjuggler assume you have perl, python, tcl/tk, flex, bison,  installed beside the listed requirements. I was stuck on boost for a long time as it default to 32bit even if you compile it from 64 cmd win of vs2010 but not specifying the 64bit flag (the key). After that, pretty smooth sailing. Ryan's cppdom cmake port was a lot of help also. and oh, you also need directx sdk installed if you want to have directx joystick support. But for that, I was only manage to get VRJuggler 3.0.0 compiled. I didn't quite manage to get the directx joystick compiled from the latest svn co. And of course, you have a lot of env variable to setup. I will also include that list of env variables in the binary rar.
--
-simon

Ryan Pavlik

unread,
May 7, 2012, 12:02:54 PM5/7/12
to vrjuggler...@googlegroups.com
All you have to do is build CPPDOM using the CMake software - couldn't find instructions on how to do that offhand besides -h, which isn't very windows-helpful.  So, here's a screencast:


You basically just have to do exactly what I do in the video

Maia R.

unread,
May 11, 2012, 3:10:44 PM5/11/12
to vrjuggler-questions
Hi Ryan,

And thank you very much for the video.
My questions are:
- do I need to build all dependencies (Sonix, etc.) of VR Juggler like
in the video ?
- do I need to to build all for 64 bits to work together ?
- Are there tutorial to build VR Juggler form the source ?

Thank you,
Maia
> > manifest tool do something to finalize its creation?- Hide quoted text -
>
> - Show quoted text -

Patrick Hartling

unread,
May 18, 2012, 12:49:36 PM5/18/12
to vrjuggler...@googlegroups.com
On May 11, 2012, at 8:10 PM, Maia R. wrote:

> Hi Ryan,
>
> And thank you very much for the video.
> My questions are:
> - do I need to build all dependencies (Sonix, etc.) of VR Juggler like
> in the video ?
> - do I need to to build all for 64 bits to work together ?

32- and 64-bit code cannot be combined so yes, everything has to be compiled as 64-bit binaries for what you want.

> - Are there tutorial to build VR Juggler form the source ?
>

The VR Juggler wiki has several very old pages about compiling VR Juggler. The following has some relevant information, but it's way out of date:

http://code.google.com/p/vrjuggler/wiki/BuildingFromSvn

Since you are targeting Windows, you should look at README-WINDOWS.html in the top of the Juggler source tree.

-Patrick
--
Patrick L. Hartling
iOS Library Developer, T8 Webware
http://www.t8webware.com/

mari

unread,
Jul 2, 2012, 8:50:34 AM7/2/12
to vrjuggler...@googlegroups.com
Hi Ryan,
 
first, thank you for the screencast!
You are talking about a cmakelists.txt file. What's it all about? Where could i get it from?
I have downloaded the cppdom version 1.2.0 and installed CMake.
Are there other preconditions i have to mention, to get the same result as in your screencast?
 
Thanks,
mari

Ryan Pavlik

unread,
Jul 2, 2012, 1:20:02 PM7/2/12
to vrjuggler...@googlegroups.com
That's a build description file that comes with a project. I've made a patched version of CPPDOM that includes them, but Patrick hasn't merged that build system in to the official version (yet).  You can grab my patched version here:  https://github.com/rpavlik/cppdom

(The screencast's steps will only work with projects that have a CMake-based build system - that's something that is chosen/done by the developers.)
Reply all
Reply to author
Forward
0 new messages