2014-02-24 280 views
1

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

std::string PRINT_STATE_NAME(pPrintState func); 

其中pPrintState是这样的类型定义:

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

所以我JIT编译pPrintState并有其LLVM ::函数类型可用。

接下来我想从llvm C++ API调用上面定义的PRINT_STATE_NAME()。不幸的是我无法弄清楚传递给调用指令的参数。 Atm我使用转换后的pPrintState的内部类型创建了llvm :: GlobalVariable。但我应该通过什么作为初始值设定项?或者我在这里完全走错了路?任何帮助表示赞赏!谢谢!

回答

1

你需要获得pPrintState的地址(JIT'ed一个,经由getPointerToFunction()或getPointerToNamedFunction())施放此地址(如整数),以pPrintState和作为参数传递。