C++ LLVM执行引擎找不到我的函数

C++ LLVM执行引擎找不到我的函数,c++,llvm,C++,Llvm,我正在使用LLVM的ExecutionEngine运行一个模块。该模块包含一个名为blub的函数,该函数返回5。在C中: int blub() { int x = 5; return x; } 这是我执行“BLUB”的C++代码: 因此,函数确实在模块中,但它不能由执行引擎解决。我是否遗漏了一个步骤?来自(强调我的): getPointerToNamedFunction-此方法通过使用dlsym函数调用返回指定函数的地址 因此,它仅用于解析库符号,而不用于解析代码生成的符号。 你应该先

我正在使用LLVM的
ExecutionEngine
运行一个模块。该模块包含一个名为
blub
的函数,该函数返回
5
。在C中:

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

这是我执行“BLUB”的C++代码:

因此,函数确实在模块中,但它不能由
执行引擎解决。我是否遗漏了一个步骤?

来自(强调我的):

getPointerToNamedFunction-此方法通过使用dlsym函数调用返回指定函数的地址

因此,它仅用于解析库符号,而不用于解析代码生成的符号。

你应该先打电话,然后再看结果。

来自(强调我的):

getPointerToNamedFunction-此方法通过使用dlsym函数调用返回指定函数的地址

因此,它仅用于解析库符号,而不用于解析代码生成的符号。

你应该先打电话,然后再看结果

// 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;
blub
LLVM ERROR: Program used external function 'blub' which could not be resolved!