我有一个 C++ 文件,它具有一些功能,例如:int myMax(int a,int b)
,并将其编译为 llvm IR。现在我想在另一个 C++ 文件中操作 IR,我不知道如何调用我的 C++ 文件中的函数(例如:myMax)。
问问题
758 次
1 回答
0
您可以将 IR 编译为您平台的目标文件(使用llc
)。该目标文件与由 C++ 编译器生成的任何其他目标文件类似。所以你可以从你的 C++ 代码中调用它。
更具体地说。您将文件编译int myMax(int a, int b)
成某个目标文件,例如mymax.o
. 您的“用户”C++ 代码需要:
myMax
通过包含适当的标头或仅声明函数原型来查看声明。- 链接到
mymax.o
最终可执行文件中的实现。
或者,您可以使用 LLVM 的现有 JIT 功能对 C++ 代码中的 IR 模块进行 JIT,然后使用getPointerToFunction
它来访问它。
于 2013-01-25T16:46:20.083 回答