2
我試圖用clangs JIT註冊一個extern函數沒有成功。用clang的JIT註冊extern函數?
繼承人的功能,我嘗試撥打:
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);
而且繼承人的C代碼,這將是由JIT來跑:
int myFunction(int);
int main()
{
int dd = myFunction(5);
return 0;
}
我的代碼是不正確的還是別的?有任何想法嗎? 謝謝。
什麼是錯誤?什麼是啓動llvm的完整命令行? – osgx 2011-05-22 02:05:51