除了 boost(Bind & Function),我如何在 C++ 中动态调用函数?
PHP 具有:
$obj = new MyObject();
$function = 'doSomething';
$obj->$function();
Objective-C 有:
MyObject *obj = [[MyObject alloc] init];
SEL function = NSSelectorFromString(@"doSomething");
[obj performSelector: function];
最佳答案
您可以导出必要的函数(例如,通过使用 __dllexport 标记它们)并使用 GetProcAddress 或 dlsym(取决于您的平台)获取它们的地址:
void *handle = dlsym(0, RTLD_LOCAL | RTLD_LAZY);
FunctionType *fptr = (FunctionType *)dlsym(handle, "doSomething");
fptr();
HANDLE handle = GetCurrentProcess();
FunctionType *fptr = (FunctionType *)GetProcAddress(handle, "doSomething");
fptr();
尽管所有这些都是特定于平台的,并且在 C++ 中没有执行此操作的标准方法。
关于c++ - C++动态调用函数的方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8921446/