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
來訪問它。