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 将指向函数的指针传递给另一个函数的主要内容,如果未能解决你的问题,请参考以下文章