2013-11-05 55 views
0

我寫了下面的代碼:LLVM的元數據和外部函數錯誤

#include "llvm/IR/Instructions.h" 
#include "llvm/IR/Metadata.h" 

using namespace llvm; 

int main() { 

    int a=0,b=0,c=0; 
    Instruction *I; 
    LLVMContext& C = I->getContext(); 
    MDNode* N = MDNode::get(C, MDString::get(C, "my md string content")); 
    I->setMetadata("my.md.name", N); 

    if(a>b){ 
     c=a; 
     cast<MDString>(I->getMetadata("my.md.name")->getOperand(0))->getString(); 
    } 
    else 
     c=b; 

    return c; 
} 

當我嘗試用lli運行這段代碼,它會生成以下錯誤:

「LLVM錯誤:無法找到外部函數'___ZXXcONTEXT4LS'無法解析!「

你能幫我解決這個問題嗎?我瞭解LIBFFI項目。不幸的是,LIBFFI在windows平臺上運行仍然存在問題。還有其他解決方案嗎?

回答

1

至少有兩個嚴重的問題在這裏:

  1. I您重定向之前未分配(這會導致分段錯誤)。
  2. 你的意思是你「具有LLI運行此」?應該使用lli來解釋/ JIT LLVM IR。上面顯示的內容可能是必須與LLVM鏈接的C++程序,而這些完全不同。

您是否嘗試過LLVM tutorial?強烈推薦。

+0

我會去通過本教程。謝謝。但是你知道外部功能錯誤的原因嗎? – ConsistentProgrammer

+0

@ConsistentProgrammer:您需要首先提供更多細節 - 這意味着您使用lli運行該代碼是什麼意思?該代碼並不意味着與lli一起運行。這是C++代碼,應該與LLVM鏈接並將其用作庫。 –