-
Notifications
You must be signed in to change notification settings - Fork 217
Conversion problem from boost to std [Windows] #229
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Comments
Fascinating. The Falcon driver uses the std::array completely internally to do some of its calculations and does not expose that through a header or include anything that might include boost when it is compiling. Does this happen when you are compiling VRPN itself, or when you are compiling your program and trying to link it to your program? Also, can you include the lines leading up to the error above so I can see what stage of the compilation/linking and what line on what file the error happens? "Don't use standard libraries" is one of the rules for VRPN code, to avoid this and conflicts between the two early versions of the standard library, but sometimes the rule is broken. It doesn't often get us into trouble, but when it does it can be subtle. |
It could be that the new falcon libraries are including boost's array and that is causing conflicts... |
It happens when I compile VRPN separately. And it is caused by this line in the file
The type |
So the problem is that the two types are now incompatible. Try removing the #include and change the definition of d_vector to boost::array<double,3> and let me know if that solves the problem. If so, please do a pull request so we can get this change into master. Thanks! |
Did changing the definition to boost::array work for you? |
Sorry for the late response. So, I tried what you said, I changed the definition of
However, I have already linked |
This is a different issue from boost usage. The DLL compilation path is not as well maintained as the static-library path. The first thing I would try is static linkage. This looks like a standard library-linking problem. If you're compiling on Linux, my guess is that the falcon libraries are included in the linking command line before the VRPN ones that reference them. In any architecture, I'd check to make sure that the falcon library that defines that symbol is on the link line (there may be multiple libraries). |
yeah this is entirely a library maintenance issue on the libnifalcon side - don't drag the defenseless standard libraries into it :) Presumably at some point they switched the type they exposed in their API? The libnifalcon readme says dynamic linking isn't supported due to missing declspec annotations. |
(To be fair, they changed from boost::array to std::array back in 2014 - std::array is at least standard and not requiring an external dep - if you're going to return an array of fixed size, that's a decent way to do it. libnifalcon/libnifalcon@817c71c#diff-bb06f8197ccad2bed811e7d1c6bd30f2 ) |
Hello guys,
I'm now working with a Falcon haptic device for a project. And I would like to use VRPN (on Windows) to communicate with it.
However, I have some issues when I build the solution on Visual Studio (2017).
I have linked Boost (1.69) correctly to my project, so I don't know why I get this error.
Is there another library I have to install to make this conversion?
Thanks in advance!
The text was updated successfully, but these errors were encountered: