1
我最近開始在MinGW下試驗LLVM。我已閱讀Kaleidoscope教程,但現在我遇到外部功能問題。LLVM外部函數
我聲明瞭外部函數是這樣的:
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);
其中,mod是模塊*和CTX是LLVMContext &。
在這種情況下,一切工作正常。 但是,如果我聲明瞭一個函數:
extern "C"
double my_cubic_transform(double x) {
return x*x*x;
}
並使用「罪」使用「my_cubic_transform」改變SinFunction聲明(不改變其他任何東西),然後我得到:
LLVM ERROR: Program used external function 'my_cubic_transform' which could not be resolved
更改我的makefile中包含「-g」選項沒有效果。 萬花筒教程建議這是可能的LLVM(至少對於JIT,我正在使用)。那麼我做錯了什麼?如果是這樣,什麼?
是的,可能是除Windows以外的任何平臺:) – jer 2010-07-06 21:30:09
這很奇怪,我在Ubuntu上,並得到相同的錯誤 – altschuler 2013-06-21 11:21:49