除了boost(Bind&Function)之外,如何在C++中动态调用函数?
PHP有:
$obj = new MyObject();
$function = 'doSomething';
$obj->$function();
Run Code Online (Sandbox Code Playgroud)
Objective-C有:
MyObject *obj = [[MyObject alloc] init];
SEL function = NSSelectorFromString(@"doSomething");
[obj performSelector: function];
Run Code Online (Sandbox Code Playgroud)
您可以导出必要的函数(例如,通过使用__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++中没有标准的方法来实现这一点.
归档时间: |
|
查看次数: |
9260 次 |
最近记录: |