2016-11-08 43 views
1

我正在使用LLVM的ExecutionEngine来运行模块。该模块包含一个名为blub的函数,返回5。在C:LLVM执行引擎找不到我的功能

int blub() { 
    int x = 5; 
    return x; 
} 

这里是执行“咕噜咕噜”我的C++代码:

// Print out all of the functions, just to see 
for (auto& function : M->functions()) { 
    std::cout << function.getName().str() << std::endl; 
} 

auto engine = EngineBuilder(std::move(M)).create(); 

engine->finalizeObject(); 

using MyFunc = int(); 
auto func = (MyFunc*)engine->getPointerToNamedFunction("blub"); 

auto result = func(); 

std::cout << "result is " << result << std::endl; 

应该打印出的所有功能(只是“咕噜咕噜”),然后将结果“的名字5 ”。

不过,我得到这个错误,而不是:

blub 
LLVM ERROR: Program used external function 'blub' which could not be resolved! 

所以功能确实在模块中,但它不能被ExecutionEngine解决。我错过了一步吗?

回答