c ++ - LLVM: linkfejl i VS 2015

Indlæg af Hanne Mølgaard Plasc

Problem



Jeg har hentet kilde og bygget LLVM ved hjælp af CMake og VS 2015.


Mit prøveprogram er følgende:


#include <iostream>

#include "llvm/IR/LLVMContext.h"
#include "llvm/IR/Module.h"
#include "llvm/IR/Function.h"
#include "llvm/IR/CFG.h"
#include "llvm/IRReader/IRReader.h"
#include "llvm/Support/SourceMgr.h"
#include "llvm/Support/raw\_ostream.h"

using namespace llvm;

int main(int argc, char **argv) {
    if (argc < 2) {
        errs() << "Usage: " << argv[0] << " <IR file>
";
        return 1;
    }

    // Parse the input LLVM IR file into a module.
    SMDiagnostic Err;
    LLVMContext TheContext;
    std::unique\_ptr<Module> Mod = parseIRFile(argv[1], Err, TheContext);
    if (!Mod) {
        Err.print(argv[0], errs());
        return 1;
    }

    // ... use module
}


Jeg får følgende linkfejl efter at have inkluderet LLVM lib-biblioteket i linkerbiblioteksstien:


Severity    Code    Description Project File    Line    Suppression State
Error   LNK2019 unresolved external symbol "public: \_\_thiscall llvm::LLVMContext::LLVMContext(void)" (??0LLVMContext@llvm@@QAE@XZ) referenced in function \_main LLVM\_IRReader   c:Users
lykkeidocumentsvisual studio 2015ProjectsLLVM\_IRReaderLLVM\_IRReaderMain.obj 1   

Severity    Code    Description Project File    Line    Suppression State
Error   LNK2019 unresolved external symbol "public: \_\_thiscall llvm::Module::~Module(void)" (??1Module@llvm@@QAE@XZ) referenced in function "public: void * \_\_thiscall llvm::Module::`scalar deleting destructor'(unsigned int)" (??\_GModule@llvm@@QAEPAXI@Z)   LLVM\_IRReader   c:Users
lykkeidocumentsvisual studio 2015ProjectsLLVM\_IRReaderLLVM\_IRReaderMain.obj 1   

Severity    Code    Description Project File    Line    Suppression State
Error   LNK2019 unresolved external symbol "class llvm::raw\_ostream & \_\_cdecl llvm::errs(void)" (?errs@llvm@@YAAAVraw\_ostream@1@XZ) referenced in function \_main    LLVM\_IRReader   c:Users
lykkeidocumentsvisual studio 2015ProjectsLLVM\_IRReaderLLVM\_IRReaderMain.obj 1   

Severity    Code    Description Project File    Line    Suppression State
Error   LNK2019 unresolved external symbol "public: void \_\_thiscall llvm::SMDiagnostic::print(char const *,class llvm::raw\_ostream &,bool,bool)const " (?print@SMDiagnostic@llvm@@QBEXPBDAAVraw\_ostream@2@\_N2@Z) referenced in function \_main   LLVM\_IRReader   c:Users
lykkeidocumentsvisual studio 2015ProjectsLLVM\_IRReaderLLVM\_IRReaderMain.obj 1   


Er der nogen der ved, hvordan man løser disse fejl? Jeg ser f.eks. Raw\_ostream.obj i LLVM build-mappen ...

Bedste reference


Jeg har aldrig brugt LLVM, men på baggrund af dine fejlmeddelelser lykkedes det ikke at finde LLVM klasse implementeringer.


Efter min mening er det ikke nok med LLVM lib-biblioteket. Du skal også inkludere LLVM biblioteker (.lib som implementerer LLVM klasserne) du vil linke med.