J'ai récemment commencé à expérimenter avec LLVM sous MinGW. J'ai lu le tutoriel Kaleidoscope mais maintenant j'ai des problèmes avec les fonctions externes.LLVM extern functions
Je déclarais des fonctions externes comme ceci:
const Type* doubleType = Type::getPrimitiveType(ctx, Type::DoubleTyID);
std::vector<const Type*> doubleParams;
doubleParams.push_back(doubleType);
FunctionType* doubleDouble = FunctionType::get(doubleType, doubleParams, false);
Function* SinFunction = Function::Create(doubleDouble, Function::ExternalLinkage, "sin", mod);
Où mod est le module * et CTX est le LLVMContext &.
Dans ce cas, tout fonctionne correctement. Cependant, si je déclare une fonction:
extern "C"
double my_cubic_transform(double x) {
return x*x*x;
}
Et changer la déclaration de SinFunction d'utiliser « péché » à l'aide de « my_cubic_transform » (sans changer quoi que ce soit d'autre), puis-je obtenir:
LLVM ERROR: Program used external function 'my_cubic_transform' which could not be resolved
Changer mon makefile pour inclure l'option "-g" sans effet. Le tutoriel Kaléidoscope a suggéré que c'était possible dans LLVM (au moins pour JIT, que j'utilise). Alors je fais quelque chose de mal? Si oui, quoi?
Ouais, probablement toute plate-forme autre que windows :) – jer
c'est étrange, je suis sur Ubuntu et obtenir la même erreur – altschuler