#include <iostream>

struct Action {
    virtual void operator() () const = 0;
};

// The DLL function
void RunFunction(const Action &action) {
    action();
}

// Define your function as a derived functor
struct FunctionToExecute : Action {
    void operator() () const { std::cout << "Hello\n"; }
};

int main() {
    // Run a function
    RunFunction(FunctionToExecute());
}