0
我有一个C++文件,其hassome函数,如:int myMax(int a,int b)
,并将其编译为一个llvm IR。现在我想在另一个C++文件中操作IR,我不知道如何在我的C++文件中调用函数(如:myMax)。C++如何调用红外功能
我有一个C++文件,其hassome函数,如:int myMax(int a,int b)
,并将其编译为一个llvm IR。现在我想在另一个C++文件中操作IR,我不知道如何在我的C++文件中调用函数(如:myMax)。C++如何调用红外功能
您可以将IR编译为您平台的目标文件(使用llc
)。这个目标文件就像由C++编译器生成的任何其他目标文件。所以你可以从你的C++代码中调用它。
更具体地说。你用一个文件int myMax(int a, int b)
编译成一个目标文件,比如mymax.o
。您的“用户”C++代码需要:
myMax
的声明,方法是包含适当的头文件或只声明函数原型。mymax.o
以在最终的可执行文件中执行。或者,你可以使用LLVM的JIT的现有能力,JIT在你的C++代码的IR模块,然后使用getPointerToFunction
来访问它。