llvm-在cpp中定义函数并创建调用

llvm-在cpp中定义函数并创建调用,llvm,Llvm,在llvm项目教程中,它们通常有一个骨架文件,其中调用了一个外部函数,而它的主体是在一个c文件中实现的,该文件的.bc将被链接,以获得查找外部函数的结果位代码。 但是,在github中查看已实现的LLVM项目时,我没有看到它们使用任何c文件并将其链接到生成的位代码。 我的问题是如何定义函数并创建对函数的调用。定义内在函数是唯一的方法吗 在cpp中定义函数并对该函数进行createCall时,在运行位码/或二进制时,它找不到在cpp中定义的函数的定义。我不确定是否正确理解您的问题,但将尝试回答 当

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


在cpp中定义函数并对该函数进行createCall时,在运行位码/或二进制时,它找不到在cpp中定义的函数的定义。

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

当您执行
Function*myF=module->getOrInsertFunction(“myF”,…)您只需为它创建一个声明。很像
void myF(…)


要将
myF
转换为定义,请创建
BasicBlock
s,用
指令
s填充它们,然后将这些
BasicBlock
插入
myF
。这将在您的模块中定义
myF
,您将不再看到“未找到定义”错误。

谢谢您回复我。为了解决获取“未找到定义”的问题,我必须在一个c文件中实现函数体并链接其生成的bt。然而,这正是我所寻找的。然而,我主要关心的是实现函数LLVM指令是多么容易/合理,而函数本身在用C编写时似乎非常复杂——例如,它使用指针转换、结构、重新解释等。