c++ - LLVM execution engine cannot find my function -


i using llvm's executionengine run module. module contains function called blub returns 5. in c:

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

here c++ code executing "blub":

// print out of functions, see (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 " << result << std::endl; 

it should print out names of functions (just "blub") , result, "5".

however, error instead:

blub llvm error: program used external function 'blub' not resolved! 

so function indeed in module, cannot resolved executionengine. missing step?

from the documentation of getpointertonamedfunction (emphasis mine):

getpointertonamedfunction - method returns address of specified function using dlsym function call.

as such useful resolving library symbols, not code generated symbols.

you should instead call findfunctionnamed , runfunction on result.


Comments

Popular posts from this blog

php - How to add and update images or image url in Volusion using Volusion API -

javascript - jQuery UI Splitter/Resizable for unlimited amount of columns -

javascript - IE9 error '$'is not defined -