2010-08-18 13 views
2

Im essayant d'enregistrer une fonction externe avec JIT clangs sans succès.Enregistrement d'une fonction externe avec JIT de clang?

Heres la fonction im essayant d'appeler:

extern "C" 
int myFunction(int val) 
{ 
fprintf(stderr, "success!"); 

return 1; 
} 

Heres le code im en utilisant pour l'enregistrer:

llvm::FunctionType* ft = llvm::FunctionType::get(llvm::Type::getInt32Ty(llvm::getGlobalContext()), 
    std::vector<const llvm::Type*>(1, llvm::Type::getInt32Ty(llvm::getGlobalContext())), false); 

llvm::Function* F = llvm::Function::Create(ft, llvm::Function::ExternalLinkage, "yipee", Mod); 
EE->addGlobalMapping(F, (void*)(intptr_t)yipee); 

Et voici le code c qui sera couru par le JIT:

int myFunction(int); 
int main() 
{ 
    int dd = myFunction(5); 

    return 0; 
} 

Mon code n'est pas correct ou autre chose? Des idées? Merci.

+0

Quelle est l'erreur? Qu'est-ce qu'une ligne de commande complète de démarrage de llvm? – osgx

Répondre

1

Vous devez vous assurer de lier la fonction externe au même programme que celui à partir duquel le JIT est appelé.