- Home /
Best approach to C++ integration into a script
Hi,
I have a core library that is completely built in C++. I need to harness its functionality from within a game, via a Unity script.
There are additional operations that need to happen when making the calls to c++ through pinvoke, and the scripts bloat in size and become very messy. So I am considering the approach of building a "wrapper" dll in c# to take the complication away from the scripts for managing the pinvoke calls and the other operations. Then use the dll in my script. Keeping them simple.
Which approach is the recommended approach?
a) Do all pinvoke directly in the C# scripts within Unity (therefor making the script do a load of extra work that goes with the pinvoke call)
b) Write a wrapper to keep it segregated and then use the wrapper in the unity scripts.
Thanks in advance!
Answer by Baste · Dec 16, 2014 at 12:54 PM
You really want a wrapper around any kind of calls down to libraries in other languages. Otherwise, every single pinvoke call is a potential bug source, and your code becomes cluttered with c++ implementation details.
If the additional operations that needs to happen is also the same for every identical call (or can be grouped into different abstractions), that's another reason to add a wrapper to take care of that part.
Finally, remember that although putting the wrapper in a dll will help with keeping namespaces clean and speeding up compilation and all of that good stuff, it's not neccessary. You can just write the wrapper as a part of your general code base. If the size of the wrapper is small (it fits within a single class both in terms of number of lines and in terms of abstraction), just make the wrapper hang out with everything else.
Thanks very much! That's pretty much what I thought but wanted to get a steer from others as well. The wrapper has quite a lot in it so it would be best out on its own.
Thanks! :-)