What's this compatibility problem you keep talking about? The main thing you have to avoid doing is freeing memory across module boundaries (potentially using one version of the runtime to allocate and another to free) and that's an easy problem to solve without resorting to ditching the CRT. Either export a couple of wrapper functions for memory that's going to be allocated/freed across boundaries or use an external allocator like LocalAlloc.
Additionally, the CRT is versioned, hence names like msvcr100.dll. If somebody compiles a plugin using a different version, you just get another DLL loaded in. If you've got msvcrt.dll in mind, you're not supposed to be using that even if plenty of older applications do so. It's supposed to be strictly for system use.






Bookmarks