小编Pře*_*ala的帖子

如何在LLVM中调用函数

我想问你在LLVM中调用/绑定自己的c++函数的正确方法。

我编写了简单的函数:

void writeSomething() {
    std::cout << "Awesome" << std::endl;
} 
Run Code Online (Sandbox Code Playgroud)

在 LLVM 中,我试图注册该函数。我已经创建了它的外部链接。

      // Void type
llvm::FunctionType* fccType =
        llvm::FunctionType::get(
            llvm::Type::getVoidTy(getGlobalContext()), false
        );

// External - c++
Function *fcc = (Function*) module->getOrInsertFunction("writeSomething",
        fccType
        );

// Call
std::vector<Value*> emptyArgs;
CallInst::Create(fcc, makeArrayRef(emptyArgs));
Run Code Online (Sandbox Code Playgroud)

仅调用此函数的 LLVM 输出是(// 注释是我的输入,我如何理解输出)

// External linkage
declare void @writeSomething()

define internal void @main() {
entry:
  // Call my function
  call void @writeSomething()
  ret void
}
Run Code Online (Sandbox Code Playgroud)

程序以消息结束:LLVM 错误:程序使用了无法解析的外部函数“writeSomething”!

c++ compiler-construction llvm

5
推荐指数
1
解决办法
3566
查看次数

标签 统计

c++ ×1

compiler-construction ×1

llvm ×1