#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());
}
I2luY2x1ZGUgPGlvc3RyZWFtPgoKc3RydWN0IEFjdGlvbiB7CiAgICB2aXJ0dWFsIHZvaWQgb3BlcmF0b3IoKSAoKSBjb25zdCA9IDA7Cn07CgovLyBUaGUgRExMIGZ1bmN0aW9uCnZvaWQgUnVuRnVuY3Rpb24oY29uc3QgQWN0aW9uICZhY3Rpb24pIHsKICAgIGFjdGlvbigpOwp9CgovLyBEZWZpbmUgeW91ciBmdW5jdGlvbiBhcyBhIGRlcml2ZWQgZnVuY3RvcgpzdHJ1Y3QgRnVuY3Rpb25Ub0V4ZWN1dGUgOiBBY3Rpb24gewogICAgdm9pZCBvcGVyYXRvcigpICgpIGNvbnN0IHsgc3RkOjpjb3V0IDw8ICJIZWxsb1xuIjsgfQp9OwoKaW50IG1haW4oKSB7CiAgICAvLyBSdW4gYSBmdW5jdGlvbgogICAgUnVuRnVuY3Rpb24oRnVuY3Rpb25Ub0V4ZWN1dGUoKSk7Cn0=