Search code examples
c++stlstlport

What's the difference between stlportd.5.2.dll and stlportstld.5.2.dll?


After I compiled STLport, I have obtained three .dll in the bin direcotry: one is for release (stlport.5.2.dll), and the others are for debug (stlportd.5.2.dll and stlportstld.5.2.dll). I was wondering why there are two debug dlls there. Thanks!


Solution

  • stlportstld*.dll is for the Debug Mode of STLport:

    Debug mode lets you find very obscure bugs in application code which uses STL iterators and algorithms.

    It performs runtime checking of iterator validity and ownership and algorithm preconditions. When debug check reveals the bug, it terminates the program with detailed diagnostics.

    STLport in debug mode is as much exception-safe and thread-safe as in release mode.

    stlportd*.dll is the debug version of stlport*.dll, which doesn't provide additional debugging facilities as stlportstld*.dll does (although it also can be "debugged").

    You can also refer to stl\config\_auto_link.h in the STLport package to see the difference among the binaries:

    #  if defined (_STLP_DEBUG)
    #    define _STLP_LIB_OPTIM_MODE "stld"
    #  elif defined (_DEBUG)
    #    define _STLP_LIB_OPTIM_MODE "d"
    #  else
    #    define _STLP_LIB_OPTIM_MODE ""
    #  endif