llvm-在cpp中定义函数并创建呼叫

时间:2018-07-12 20:33:16

标签: llvm

在llvm项目教程中,它们通常有一个Skeleton文件,在其中调用了外部函数,而其主体是在c文件中实现的,该文件将链接.bc以得到生成的位码以查找外部函数。 但是,查看在github中实现的LLVM项目,我看不到它们使用任何c文件并将其链接到生成的位代码。 我的问题是如何定义一个函数并创建对该函数的调用。定义内在函数是唯一的方法吗?

在cpp中定义一个函数并对该函数具有createCall时,在运行位码或二进制文件时,找不到在cpp中定义的函数的定义。

1 个答案:

答案 0 :(得分:0)

我不确定我是否理解您的问题,但是会尝试回答。

执行Function* myF = module->getOrInsertFunction("myF", ...);时,您只需为其创建一个声明。就像C / C ++头文件中的void myF(...);

要将myF转换为定义,请创建BasicBlock,并用Instruction填充它们,然后将这些BasicBlock插入myF。这将在模块中myF进行定义,并且您将不再看到“找不到定义”错误。