I know there are a few similar questions, but I don't think they really have the same requirements as mine.
Our DLL is compiled with Visual Studio 2005 and must link with a specific version of the CRT, due to installation constraints. This is absolute, recompiling it with the latest version is not a solution.
We recently updated our Boost libraries. However, when I built Boost, it automatically used the latest CRT. Now, when I link Boost with our program, it creates a dependency on both the newest (wrong) version of the CRT and the old (correct) version of the CRT. The dependency on the newest version needs to go.
What is the best solution to this problem? At the moment, the best I can think of is rebuilding Boost using the old version, but I have no idea how to easily do that without modifying the source.
If there were a way to force Visual Studio to use a specific version of the CRT globally (not on a per-project basis), that would be great. Or a way to just plain remove the newest version of the CRT, but I'm pretty sure that's not possible since I think it's considered part of the OS.
AFAIK, It is not recommended to use different versions of CRT. Unlike .NET where you can refer to a .NET 1.1 dll from a .NET 2.0 dll, Unmanaged does not provide that flexibility.
Since you cannot upgrade your dlls to use newer CRT, the only thing you can do is rebuild Boost in VS2005.
Also it is not recommended to linking two dlls of different CRT. It can lead to issues like memory corruption.
Note: Each Visual Studio has its default CRT version to which all dlls refer.
Also I did not understand "remove the new CRT". You will need to install the Visual Studio Redist for each version of Visual Studio you use. (That redist contains the CRT dll) http://msdn.microsoft.com/en-us/library/abx4dbyh%28VS.80%29.aspx
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With