LLVM执行引擎找不到我的函数
LLVM execution engine cannot find my function
我使用LLVM的ExecutionEngine
来运行模块。该模块包含一个名为blub
的函数,它返回5
。In C:
int blub() {
int x = 5;
return x;
}
下面是我执行"blub"的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;
它应该打印出所有函数的名称(只是"blub"),然后是结果"5"。
但是,我得到这个错误:
blub
LLVM ERROR: Program used external function 'blub' which could not be resolved!
所以功能确实在模块中,但它不能由ExecutionEngine
解决。我是不是漏了一步?
来自getPointerToNamedFunction
(重点是我的)的文档:
getPointerToNamedFunction -该方法通过使用dlsym函数调用返回指定函数的地址。
因此,它只用于解析库符号,而不是代码生成的符号。
你应该调用findFunctionNamed
,然后runFunction
的结果
相关文章:
- 为什么在我的函数类型后使用引用运算符 (&) 允许我修改它返回的值?
- 在哪里放置我的函数?进入我的母语 Gui 还是进入我的演示者?
- 查找定义我的 C/C++ 函数/宏的文件比'grep'更简单的方法
- 为什么我的 constexpr 对象在我的函数中不是 constexpr?
- 为什么我的函数接受"std::string"进行排序不会改变它?
- 为什么 emscripten 不编译我的函数?
- binary_search() 函数在我的函数体中不起作用
- 如何将不同大小的数组传递给我的 C++ 函数?
- 如果我想使用 cout 为我的函数提供任何输入......我该如何给出
- (C++)我的函数不返回数组
- 如何让我的重载<<运算符打印出我的函数?
- 我的函数调用 (C++) 中的未声明标识符
- 钩/绕道 d3d9 (现在/结束场景) - 似乎调用我的函数然后崩溃
- 成员函数的"this"参数具有"const"类型,但我的函数实际上不是"const"
- 我应该声明我的函数模板专业化还是定义它们就足够了
- 为什么我的函数名称中会随机出现一个额外的字母
- 为什么我的函数无法使用指针打印多维数组的元素?
- 当我从头文件和实现文件调用我的函数到我的主文件时,我没有得到任何输出
- 钩子SSDT.其他驱动程序使用我的函数
- 如何修复我的函数 popFront 为我的列表?