I'm using the latest version [5f83e41](https://github.com/fancycode/MemoryModule/commit/5f83e41c3a3e7c6e8284a5c1afa5a38790809461) and VS2022. to reproduce this issue,please add a file ``ISampleDLL.h`` in SampleDLL dir: ``` #pragma once class ISampleDLL { public: virtual ~ISampleDLL() = default; virtual int addNumbers(int a,int b) = 0; }; ``` and replace ``SampleDLL.h`` ``` #include "ISampleDLL.h" class SampleDLL: public ISampleDLL { public: static SampleDLL& Instance(); virtual int addNumbers(int a,int b) override; private: SampleDLL(); ~SampleDLL(); SampleDLL(const SampleDLL&) = delete; SampleDLL& operator=(const SampleDLL&) = delete; }; ``` ``SampleDLL.cpp`` ``` #include "SampleDLL.h" SampleDLL::SampleDLL() {} SampleDLL::~SampleDLL() {} SampleDLL& SampleDLL::Instance() { static SampleDLL instance; return instance; } int SampleDLL::addNumbers(int a,int b) { return a + b; } extern "C" __declspec(dllexport) ISampleDLL* CreateSampleDLL() { return &SampleDLL::Instance(); } ``` edit ``DllLoader.cpp`` ``` ... #include "../SampleDLL/ISampleDLL.h" ... void LoadFromMemory(void) { ... using GetSampleDLL=ISampleDLL* (*)(); //addNumber = (addNumberProc)MemoryGetProcAddress(handle, "addNumbers"); GetSampleDLL getSampleDLL = (GetSampleDLL)MemoryGetProcAddress(handle,"CreateSampleDLL"); ISampleDLL* sampleDLL = getSampleDLL(); _tprintf(_T("From memory: %d\n"), sampleDLL->addNumbers(1, 2)); ... } ``` then variable ``getSampleDLL`` and ``sampleDLL`` have not null address,but the vftable of ``sampleDLL`` got adress 0x0. ps. I have read [issue#31](https://github.com/fancycode/MemoryModule/issues/31) but it didn't solve my problem