在llvm项目教程中,它们通常有一个Skeleton文件,在其中调用了外部函数,而其主体是在c文件中实现的,该文件将链接.bc以得到生成的位码以查找外部函数。 但是,查看在github中实现的LLVM项目,我看不到它们使用任何c文件并将其链接到生成的位代码。 我的问题是如何定义一个函数并创建对该函数的调用。定义内在函数是唯一的方法吗?
在cpp中定义一个函数并对该函数具有createCall时,在运行位码或二进制文件时,找不到在cpp中定义的函数的定义。
答案 0 :(得分:0)
我不确定我是否理解您的问题,但是会尝试回答。
执行Function* myF = module->getOrInsertFunction("myF", ...);
时,您只需为其创建一个声明。就像C / C ++头文件中的void myF(...);
。
要将myF
转换为定义,请创建BasicBlock
,并用Instruction
填充它们,然后将这些BasicBlock
插入myF
。这将在模块中myF
进行定义,并且您将不再看到“找不到定义”错误。