>> "this has to do with the use of boost.threading (which is incompatible with CLI as it uses TLS callbacks),"
The incompatibility is not to do with TLS or callbacks. It has to do with our use of boost::mutex. Which is not compatible with Microsoft's CLI (meaning you can't use the static versions of TA / TF in a C++/CLI compiled project). Us switching to use Microsoft's implementation of mutex (std::mutex) would not fix anything. Why? Because even MS's implementation of "mutex" is not compatible with C++/CLI.
So there's absolutely no way we can make static versions of TurboActivate and TurboFloat that are compatible with Microsoft's current implementation of C++/CLI.
Your choices are:
1. Use the dynamic versions of TurboActivate and TurboFloat. They work with every language.
2. Use the static version of TurboActivate and TurboFloat, but make sure your app or dll is a plain or C/C++ dll (not CLI).
>> "So hashing doesn't sound like the way forward"
You can also verify the Authenticode signature of the dll. But that's a good deal more work. Nothing can stop cracking. If that's what you're looking for, then you won't find it anywhere. Sure, people might *sell* it, but it's snake oil. You'd be buying lies.