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