C++怎么运行时动态加载一个类

C++怎么运行时动态加载一个类,可不可以不用虚函数。
初步的想法是这样的

// dllmain.cpp : 定义 DLL 应用程序的入口点。
#include "pch.h"

BOOL APIENTRY DllMain( HMODULE hModule,
                       DWORD  ul_reason_for_call,
                       LPVOID lpReserved
                     )
{
    switch (ul_reason_for_call)
    {
    case DLL_PROCESS_ATTACH:
    case DLL_THREAD_ATTACH:
    case DLL_THREAD_DETACH:
    case DLL_PROCESS_DETACH:
        break;
    }
    return TRUE;
}
int alg::add(int a, int b) {
    return a + b;
}
int alg::multiply(int a, int b) {
    return a * b;
}
double alg::divide(int a, int b) {
    return a / b;
}
int alg::minus(int a, int b) {
    return a - b;
}
IMPORT_DLL LPVOID PASCAL CreatObj() {
    return (LPVOID) new alg;
};

通过执行CreatObj来获得指针,再执行,可是报错"C++ 表达式必须包含指向类的指针类型,但它具有类型LPVOID"

动态加载一个类是什么意思?new 一个类就是动态加载。

我错了,是在动态加载dll里导出的类