Need to use STL derived classes in DLL interface. Are there any known problems with VC8 regarding that issue?
Posted on 2006-07-18
We are going to migrate a big MFC application (10 executables, 70 dlls) from VC6 to VC8. With that we intend to change from RogueWave to STL, what means that we want to derive our string and container classes from std::string, std::vector, std::map, ... These classes were widely used for data members and in the dll exported class and function interface (here mostly as const reference or by value). So, the following is normal: we create a persistent class object in dll1 and pass a (smart) pointer of that object to dll2. Here the data members (strings, and pointers to other objects or arrays) may be set or modified. It cannot be excluded that some of the pointers were created by 'new' in one dll and deleted in a second dll, but we never use pointers to STL classes but only to our derived classes.
Is there any known problem doing so? My last knowledge was that STL objects should not be transferred between dlls because of static members. Is that statement still valid with VC8 or is it now safe?