2016-11-08 46 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解決。我錯過了一步嗎?

回答