次のような関数を含む 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 に答える