我正在尝试用clangs JIT注册一个外部函数,但没有成功。
下面是我尝试调用的函数:
extern "C"
int myFunction(int val)
{
fprintf(stderr, "success!");
return 1;
}下面是我用来注册它的代码:
llvm::FunctionType* ft = llvm::FunctionType::get(llvm::Type::getInt32Ty(llvm::getGlobalContext()),
std::vector<const llvm::Type*>(1, llvm::Type::getInt32Ty(llvm::getGlobalContext())), false);
llvm::Function* F = llvm::Function::Create(ft, llvm::Function::ExternalLinkage, "yipee", Mod);
EE->addGlobalMapping(F, (void*)(intptr_t)yipee);下面是将由JIT运行的c代码:
int myFunction(int);
int main()
{
int dd = myFunction(5);
return 0;
}我的代码不正确还是别的什么?有什么想法吗?谢谢。
发布于 2011-08-13 06:20:03
您需要确保将外部函数链接到调用JIT的同一个程序中。
https://stackoverflow.com/questions/3514996
复制相似问题