c++ - C++动态调用函数的方法

标签 c++ function

除了 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/

相关文章:

C++ 平方函数

来自数组的 Javascript 函数

python-3.x - 在Python中解析多个xml文件

c++ - 需要默认参数值的模板函数的首选设计是什么?

c++ - 中断来自并行线程的阻塞调用

python - 如何修改类函数中的变量

c++ - 从第三方类实现虚函数

c++ - 删除多个文件后出现 "too many open files"错误

c++ - 有没有办法在没有锁的情况下同步它?

c# - 将 Direct2D 呈现重定向到 WPF 控件