3

関数パスでグローバル変数を作成しようとしています。コードは

gVar= new GlobalVariable(
    /*Type=*/Int32Type,
    /*isConstant=*/false,
    /*Linkage=*/GlobalValue::CommonLinkage,
    /*Initializer=*/0, // has initializer, specified below
    /*Name=*/"gVar",
    /*ThreadLocalMode*/GlobalVariable::InitialExecTLSModel);

ただし、次のコンパイラ エラーが発生し続けます。

エラー: 'llvm::GlobalVariable::GlobalVariable(const llvm::Type*&, bool, llvm::GlobalValue::LinkageTypes, int, const char [4], llvm::GlobalVariable::ThreadLocalMode への呼び出しに一致する関数がありません)'</p>

llvm でグローバル変数を宣言する正しい方法を教えてください。どうもありがとうございました!

さらに、ヘッダー ファイルを参照しました。

http://llvm.org/docs/doxygen/html/GlobalVariable_8h_source.html

そしてこの投稿

LLVMでグローバル変数を宣言するにはどうすればよいですか?

4

1 に答える 1

6

モジュールをコンストラクターに渡す必要があります。LLVM コード ベースには、グローバル変数を作成するための例がたくさんあります。たとえば、examples/ExceptionDemo/ExceptionDemo.cpp次のようになります。

new llvm::GlobalVariable(module,
                         stringConstant->getType(),
                         true,
                         llvm::GlobalValue::LinkerPrivateLinkage,
                         stringConstant,
                         "");

ところで - 重要な注意: 新しいグローバルを作成したり、関数パスでモジュールを変更するようなことをしたりしないでください。それを行う必要がある場合は、モジュール パスが必要です。

于 2013-11-08T19:21:56.303 に答える