64bit Framework available (again)?

Post questions, comments and feedback to our 3Dconnexion Mac Development Team.

Moderator: Moderators

Post Reply
till213
Posts: 10
Joined: Mon Aug 23, 2010 2:54 am

64bit Framework available (again)?

Post by till213 »

Hello all,

my goal: on Mac OS X (10.6.4) I want to link my Qt application against the 3DConnection Client framework.

So my first test was to setup an example project and weak-link against the framework, as done in the Cocoa XCode example project, by passing the proper argument to the linker.

Eventually I want to compile a 64bit Qt application (x86_64), but the linker error message I received was "No 64 bit architecture found in Framework" (not the exact words off course).

Note that at this point I did not even #include a 3DConnection Client header, all I want for now is to link against the framework.

So my next step was to build for x86 only (32 bit), and indeed, the linking stage completed successfully.


A quick look with the "otool -L" (the "ldd" equivalent for Mac) suggested that the 3DConnexion Client framework indeed only contains binaries for the x86 and PPC architecture, but not x86_64.


According to this posting 64bit support should have been added in the first half of 2008 already: viewtopic.php?t=1637

Can anyone confirm that this is (or was: maybe it accidentally "dropped out" again) the case?

By the way I am using the 3DxMacWare driver version 1.6.1, downloaded last week.


On another note (but might be related) I don't have 3D mouse support in Procedural CityEngine, a 64bit Java based application on Mac: the mouse ("Space Explorer USB") is not detected. This also could be a hint that there is indeed no 64 bit support in the 3DConnexion Client framework?

There is some discussion about "jinput" which does not detect the 3D mouse either: viewtopic.php?t=1810

But not sure whether they explicitly talk about 64 bit applications or not...

The mouse itself works fine in Blender on Mac though.


Currently I am not at my Mac, but I can provide more info such as the exact linker arguments, Qt project *.pro file I am using or the exact output of the "otool" later on.


Thank you,
Oliver
till213
Posts: 10
Joined: Mon Aug 23, 2010 2:54 am

Post by till213 »

Here is another thread I ran across while doing some research:

viewtopic.php?t=3214

It is about that the SpaceNavigator apparently does not run "in 64 bit mode" (I did not even know that you can toggle the Mac kernel to run in 32 bit mode only?).

The thread ends just recently (July 29 2010). Unfortunatelly that guy had problems downloading the DMG image file version 1.6.0, so there is still no real evidence whether the latest driver (I am using 1.6.1) is supporting 64 bit or not.

So if some 3DConnexion developer could confirm whether 64 bit is still on the way or whether I am just too stupid to provide the proper linker flags that would be really helpful :)
till213
Posts: 10
Joined: Mon Aug 23, 2010 2:54 am

Post by till213 »

For the record:

xy-imac:Current tknoll$ pwd
/Library/Frameworks/3DconnexionClient.framework/Versions/Current

xy-imac:Current tknoll$ otool -L -arch all 3DconnexionClient
3DconnexionClient (architecture ppc):
/Library/Frameworks/3DconnexionClient.framework/Versions/A/3DconnexionClient (compatibility version 1.0.0, current version 1.0.0)
/System/Library/Frameworks/Carbon.framework/Versions/A/Carbon (compatibility version 2.0.0, current version 128.0.0)
/System/Library/Frameworks/IOKit.framework/Versions/A/IOKit (compatibility version 1.0.0, current version 184.0.0)
/usr/lib/libSystem.B.dylib (compatibility version 1.0.0, current version 71.1.3)
3DconnexionClient (architecture i386):
/Library/Frameworks/3DconnexionClient.framework/Versions/A/3DconnexionClient (compatibility version 1.0.0, current version 1.0.0)
/System/Library/Frameworks/Carbon.framework/Versions/A/Carbon (compatibility version 2.0.0, current version 128.0.0)
/System/Library/Frameworks/IOKit.framework/Versions/A/IOKit (compatibility version 1.0.0, current version 275.0.0)
/usr/lib/libgcc_s.1.dylib (compatibility version 1.0.0, current version 1.0.0)
/usr/lib/libSystem.B.dylib (compatibility version 1.0.0, current version 88.3.3)


So it seems the 3DconnexionClient library supports indeed just the i386 and ppc architecture, but I need the x86_64 architecture as well.


On the other hand, the Qt library has indeed both the desired i386 (32 bit) and x86_64 architecture in it (just to show the desired output):

xy-imac:4 tknoll$ otool -L -arch all QtCore
QtCore (architecture x86_64):
QtCore.framework/Versions/4/QtCore (compatibility version 4.6.0, current version 4.6.0)
/usr/lib/libz.1.dylib (compatibility version 1.0.0, current version 1.2.3)
/usr/lib/libSystem.B.dylib (compatibility version 1.0.0, current version 111.1.4)
/System/Library/Frameworks/ApplicationServices.framework/Versions/A/ApplicationServices (compatibility version 1.0.0, current version 34.0.0)
/usr/lib/libstdc++.6.dylib (compatibility version 7.0.0, current version 7.4.0)
/usr/lib/libgcc_s.1.dylib (compatibility version 1.0.0, current version 1.0.0)
/System/Library/Frameworks/CoreServices.framework/Versions/A/CoreServices (compatibility version 1.0.0, current version 32.0.0)
/System/Library/Frameworks/CoreFoundation.framework/Versions/A/CoreFoundation (compatibility version 150.0.0, current version 476.18.0)
QtCore (architecture i386):
QtCore.framework/Versions/4/QtCore (compatibility version 4.6.0, current version 4.6.0)
/usr/lib/libz.1.dylib (compatibility version 1.0.0, current version 1.2.3)
/usr/lib/libSystem.B.dylib (compatibility version 1.0.0, current version 111.1.4)
/System/Library/Frameworks/ApplicationServices.framework/Versions/A/ApplicationServices (compatibility version 1.0.0, current version 34.0.0)
/usr/lib/libstdc++.6.dylib (compatibility version 7.0.0, current version 7.4.0)
/usr/lib/libgcc_s.1.dylib (compatibility version 1.0.0, current version 1.0.0)
/System/Library/Frameworks/CoreServices.framework/Versions/A/CoreServices (compatibility version 1.0.0, current version 32.0.0)
/System/Library/Frameworks/CoreFoundation.framework/Versions/A/CoreFoundation (compatibility version 150.0.0, current version 476.18.0)


What am I missing? Is there another 3Dconnexion Framework installed somewhere on the system? Several forum entries suggest that 64 bit support has been already added. Or was it dropped again in the latest 1.6.1 version (the only one I ever tried)?
till213
Posts: 10
Joined: Mon Aug 23, 2010 2:54 am

Post by till213 »

Hmmm, that's funny, I just stumbled over the following (older) PDF (google: "3DConnexionClient 64 bit mac"):

http://www.servodata.com.pl/ftp/3dconne ... 200805.pdf

According to chapter 4.4.2 "Changes to 3DxMacWare v. 1.5.0 since 1.4.0"

"New 64-bit 3DconnexionClient SDK framework"

But where is it?
till213
Posts: 10
Joined: Mon Aug 23, 2010 2:54 am

Post by till213 »

I found the bugger: the 3DconnexionClient framework which installed with v 1.6.1 seems to be buggy, the 64-bit support "got lost"!

I downgraded to version 1.6.0 ("Also show archived* software" checked on download page) and here we go:

xy-imac:Current tknoll$ pwd
/Library/Frameworks/3DconnexionClient.framework/Versions/Current
joe-administrators-imac:Current tknoll$ otool -L -arch all 3DconnexionClient
3DconnexionClient (architecture i386):
/Library/Frameworks/3DconnexionClient.framework/Versions/A/3DconnexionClient (compatibility version 1.0.0, current version 1.0.0)
...
3DconnexionClient (architecture ppc):
/Library/Frameworks/3DconnexionClient.framework/Versions/A/3DconnexionClient (compatibility version 1.0.0, current version 1.0.0)
...
3DconnexionClient (architecture ppc64):
/Library/Frameworks/3DconnexionClient.framework/Versions/A/3DconnexionClient (compatibility version 1.0.0, current version 1.0.0)
...
3DconnexionClient (architecture x86_64):
/Library/Frameworks/3DconnexionClient.framework/Versions/A/3DconnexionClient (compatibility version 1.0.0, current version 1.0.0)
...


Indeed, the release notes PDF of the 1.6.0 explicitly mentions:

4.4.2 "Changes to 3DxMacWare since v. 1.5.8"

* "Add driver support for 64-bit Snow Leopard OS X"



It is also noteworthy that now CityEngine properly recognises and works with my SpaceExplorer USB mouse, with the 1.6.0 release :)

And my Qt test application (still without #including any 3Dconnexion header files, just weak-linking) now compiles and links with 64-bit as well, with the following Qt qmake *.pro file (for the record):

Code: Select all

TARGET = Qt3DMouse
CONFIG        [b]+[/b]= qt warn_on thread [b]x86_64[/b]
# We just want Intel 64-bit, so don't build other architectures:
CONFIG        [b]-[/b]=  x86 x86_64 ppc
TEMPLATE = app
macx {
    [b]QMAKE_LFLAGS += -weak_framework 3DconnexionClient[/b]
}

SOURCES +=...
HEADERS  += ...
FORMS    += ...

Also note that the release notes PDF from the download page for the 1.6.1 seems to be a bit wrong, it talks about "Software Release 3.11", whereas the release notes PDF from the 1.6.0 talk about "Software Release Version 3.9". The content seems to be correct though (release dates, new changes, ...)

Comparing this to the "1.6.0 and 1.6.1 on the download page and having a look at the version 1.4.0 for UNIX and 1.4.3 for Linux", and the versioning/marketing jungle is comlete ;) Ok, let's stick to the version numbers on the download page for now, 1.6.0 (OKAY) vs 1.6.1 ("dropped 64-bit support!).

It is also nice to see that the Beta Blender plugin also still seems to work with the 1.6.0 driver. :)


So my personal recommendation for everyone is to skip the 1.6.1 (stay with the 1.6.0, unless you need Photoshop CS5 or Maya 2011 support - but that is probably only working with the 32-bit versions of these apps, no?) and wait for an (hopefully soon) upcoming 1.6.2 which contains proper 64-bit support again!
Post Reply