2011-06-27 5 views
1

C++プログラムをLLVMアセンブラにコンパイルし、リンク時にいくつかの変数の型を定義する可能性はありますか?あなたはそれをコンパイルすると、それはテンプレート関数であるため、Clang ++:リンク時にデータ型を定義する

は、この小さなプログラムの開発

template<typename T> T inc(T v) {return v++;} 

を考えてみましょう、それは、ビットコードにコンパイルされることはありません。 しかし、私はいくつかのビットコードファイルを作成し、私のプログラムの実行時にいくつかの特定のものをリンクしたいので、#include私のソースコードファイルではできません。

回避策はありますか?

+0

具体的なタイプでインスタンス化されるまで存在しません。正確に何をリンクしたいのですか? –

+0

数値ソルバーを作成しています。 Pythonで指定されたオプションに応じて、特定のソルバー(およびデータ型)を使用してバイナリプログラムにリンクする必要があります。 – manuels

+0

C++のテンプレートを使いたい場合は、C++のフロントエンドを使うか、必要な型を明示的にインスタンス化する必要があります(適切なリンク関数が生成されるように)。あなたがしなければ、リンクするものはありません。 –

答えて

0

基本的に、答えはいいえ、できません。しかし、あなたはclangライブラリにリンクし、実行時にC++から直接ルーチンをインスタンス化+コンパイルすることができます。

関連する問題