I'm trying to get the SpacePilot and SpaceNavigator to work with our product but I'm a little stuck on a 'C' wrapper. Our product has some legacy issues and 'C' is the easiest way to hook things in. The project currently, a little rough, is here...
I'll have to admit, I'm not that versed in ATL/COM stuff either and when I compile (VS2005) the above project I get the following errors (There are more than just the one listed but they are the same.)
1>c:\pmin\mtl\libastronaut\libastronaut.cpp(188) : error C3723: '_ISimpleDeviceEvents::DeviceChange': could not resolve event
1> c:\pmin\mtl\libastronaut\debug\tdxinput.tlh(316) : see declaration of '_ISimpleDeviceEvents::DeviceChange'
1> The event handler is one of:
1> c:\pmin\mtl\libastronaut\libastronaut.cpp(69): could be 'HRESULT EventHandler::OnDeviceChange(long)'
1> There are no events:
1> c:\pmin\mtl\libastronaut\debug\tdxinput.tlh(316): 'HRESULT _ISimpleDeviceEvents::DeviceChange(long)': is not an event
...
I'm wondering if anyone knows what the problem is and how I might be able to fix it.
It may be easier for you to use the old COM-less SDK. It is just C. It can be downloaded in the Archive section after you select your device type.
Jim
3Dx Software Development
Ok. My only concern with this route is if 3dconnexion will abandon the 'C' library at a future date and leave us hanging. We've hit something like that before with another vendor. Something we'd not like to have repeated.
I've tried to write my application using the COM api so far and now I have the same output about the event not being resolved as above. Is there any mayor case for this to happen? Are there any specific project settings/defines that have to be taken? Or does it even only work when the project is created with the ATL-wizard?
What I realized is, that the generated tdxinput-interface file for my project doesn't declare the parameters of DeviceChange as [in] (I'm not THAT experienced with this topic, so I don't know if this is important).