I have a private static member variable of a class foo (std::vector<double> values). There is one object of foo capsulated in a dll (interface class and implementation class idiom). This is the header file 'foo.h':
class foo
{
public:
    foo();
    ~foo();
private:
    static std::vector<double> values;
};
And the definition file 'foo.cpp':
#include "foo.h"
std::vector<double> foo::values;
foo::foo()
{
    values.resize(10UL);
}
foo::~foo()
{
    for (auto& v :values)
    {
        v = 99.9;
    }
}
Foo is constructed inside the dll, where I have my interface class (file 'interface.h'):
class interface
{
public:
    interface();
    ~interface();
     foo myFoo;
};
extern "C" foo* getFooObject();
And a getter function in my 'interface.cpp' file:
#include "interface.h"
interface::interface(){}
interface::~interfacet(){}
interface myInterface;
extern "C"
{
      foo* getFooObject()
      {
            return &myInterface.myFoo;
      }
}
In my main programm I load the dll with ::LoadLibrary(libraryName) (Windows OS). When I perform ::FreeLibrary(libraryHandle) and set a breakpoint in the destructor ~foo() variables seems already destroyed. Can somebody help me with the lifetime of static member variables in dlls? How can I prevent that static member variables are already destroyed when the destructor is called?
Thank you in advance.
Probably a similar question:
c++ Static variables in dynamic DLL lifetime. or why they dead?
I use Visual Studio 2013 with the Intel Parallel Studio XE 2016.
 
     
    