Page 1 of 1

NPTrackingToolsx64.lib points to 32-bit DLL

Posted: Mon Jun 04, 2012 1:35 pm
by Cameron
Hello,
I downloaded the Tracking Tools 2.5.0 Beta last week since I wanted to build a 64-bit application with the new 64-bit supported TT libraries. I believe the 64-bit static library NPTrackingToolsx64.lib references the 32-bit DLL instead of the 64-bit DLL.

I linked and compiled with the NPTrackingToolsx64.lib to build my 64-bit application. However, at runtime when it should link to the 64-bit NPTrackingToolsx64.dll my application aborted with errors. I tried to build the sample "markers" application (64-bit configuration) that comes with TT and also got errors. Using DependencyWalker I saw that both my application and the markers executable had a dependency listed for the 32-bit NPTrackingTools.dll, not the 64-bit NPTrackingToolsx64.dll. Indeed if I looked at the 64-bit lib file, it shows the filename of the 32-bit DLL in several places but not the 64-bit DLL filename.

I was able to work around this by renaming the 32-bit DLL and then renaming the 64-bit DLL to NPTrackingTools.dll so that it would be the one referenced by the 64-bit lib. Now my application and the sample application are working happily and dependency walker shows the dependency being resolved and it's happy.

Just wanted to let you know :)

Cameron

Re: NPTrackingToolsx64.lib points to 32-bit DLL

Posted: Mon Jun 04, 2012 6:12 pm
by NaturalPoint - Mike
I've gone ahead and reported this to our development team, they should be looking at it for the final release. Thanks for the heads up!

Re: NPTrackingToolsx64.lib points to 32-bit DLL

Posted: Mon Jun 04, 2012 6:38 pm
by beckdo
Thanks for the detailed description, Cameron. I will get this updated.

Re: NPTrackingToolsx64.lib points to 32-bit DLL

Posted: Tue Jun 05, 2012 5:44 am
by Cameron
No problem! Looking forward to the next release :)

Re: NPTrackingToolsx64.lib points to 32-bit DLL

Posted: Tue Dec 04, 2012 7:01 am
by Cameron
Just following up to ask if there is a fix or new release on the way for this issue. Our clients using OptiTrack systems with our software cannot use 64-bit Windows yet (unless instructed to rename libraries as mentioned in the above workaround, but that is not the best solution imo). Thanks,

Cameron

Re: NPTrackingToolsx64.lib points to 32-bit DLL

Posted: Wed Dec 12, 2012 8:30 am
by Cameron
bump

Re: NPTrackingToolsx64.lib points to 32-bit DLL

Posted: Wed Dec 12, 2012 10:47 am
by jolsonsalem
I went back and checked out the markers sample app that comes with Tracking Tools and an error message about NPTrackingTools did come up, but once I copied NPTrackingToolsx64 into it the app compiled and ran so I believe this has been fixed, just needs some wording in the error message changed. I have alerted our developers about that. Let me know if you have any troubles getting the 64bit version to work for you.

Re: NPTrackingToolsx64.lib points to 32-bit DLL

Posted: Wed Dec 12, 2012 12:13 pm
by Cameron
Hi Jeff,
I believe the issue is still there in the latest release (2.5.0). The problem is not that I cannot get a program to run, but that the 64-bit static library included with TT 2.5.0 does not reference the 64-bit DLL, rather it references the 32-bit DLL. So when I write software that uses the 64-bit static library it does not reference and link to the 64-bit DLL at runtime. This can be verified in a couple of ways. 1) open the static library NPTrackingToolsx64.lib in a text editor and search for ".dll", and you will find a number of references to NPTrackingTools.dll (the 32-bit DLL) instead of NPTrackingToolsx64.dll. 2) Build the sample application markers.exe that comes with Tracking Tools for x64, then use a program such as Dependency Walker to open the exe and list its dependencies. You will see that the 32-bit NPTrackingTools.dll is a dependency where again it should be NPTrackingToolsx64.dll. Image showing 64-bit markers.exe application with 32-bit NPTrackingTools.dll dependency: http://i.imgur.com/ZfOJa.png.

I describe a workaround above where I rename the DLL files so that it does end up referencing the correct 64-bit DLL, but I would rather not deploy this kind of solution to our clients. So for now I cannot upgrade them to 64-bit support because our clients use the system via our real-time control software tools that use the TT API. It should be a relatively simple fix, I was just waiting for any release that would fix this so I can have 64-bit support for my clients.

Thanks,
Cameron