Llvm C++ API 将指向函数的指针传递给另一个函数

Posted

技术标签:

【中文标题】Llvm C++ API 将指向函数的指针传递给另一个函数【英文标题】:Llvm C++ API pass Pointer to Function to another Function 【发布时间】:2014-02-24 23:47:38 【问题描述】:

如何将指向函数的指针传递给另一个函数?我有这样的功能:

std::string PRINT_STATE_NAME(pPrintState func);

其中 pPrintState 是这样的 typedef:

typedef void (*pPrintState)(std::string* buffer);

所以我 JITed pPrintState 并使其 llvm::FunctionType 可用。

接下来我想从 llvm C++ API 调用上面定义的 PRINT_STATE_NAME()。不幸的是,我无法弄清楚要传递给调用指令的参数。 Atm 我制作了一个 llvm::GlobalVariable,其内部类型为转换后的 pPrintState。但是我应该传递什么作为初始化程序?还是我在这里完全走错了路?任何帮助表示赞赏!谢谢!

【问题讨论】:

【参考方案1】:

您需要获取 pPrintState 的地址(JIT 的地址,通过 getPointerToFunction() 或 getPointerToNamedFunction())将此地址(作为整数)转换为 pPrintState 并作为参数传递。

【讨论】:

以上是关于Llvm C++ API 将指向函数的指针传递给另一个函数的主要内容,如果未能解决你的问题,请参考以下文章

将c ++引用的地址传递给指针

将指向数组的指针传递给函数时出现分段错误(C++)

C ++:将this指针传递给另一个类

获取指向 LLVM-IR 中数组第一个元素的指针

C++成员函数指针指向全局函数指针

C++ 将指针传递给函数 (Howto) + C++ 指针操作