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
NPTrackingToolsx64.lib points to 32-bit DLL
-
- Posts: 1896
- Joined: Tue Feb 01, 2011 8:41 am
- Location: Corvallis, OR
Re: NPTrackingToolsx64.lib points to 32-bit DLL
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
Thanks for the detailed description, Cameron. I will get this updated.
Re: NPTrackingToolsx64.lib points to 32-bit DLL
No problem! Looking forward to the next release
Re: NPTrackingToolsx64.lib points to 32-bit DLL
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
Cameron
-
- Posts: 323
- Joined: Thu Oct 11, 2012 9:18 am
Re: NPTrackingToolsx64.lib points to 32-bit DLL
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
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
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