我正在尝试获取一个指向函数的指针,该函数返回一个void并且有一个字符串作为arguement。代码编译成功,但在运行传递时,它失败并出现以下错误:
断言`(i> = FTy-> getNumParams()|| FTy-> getParamType(i)== Args [i] - > getType())&& “调用带有错误签名的函数!”'失败。
有人可以帮忙。如何正确创建此功能的签名?
StructType *StructTy_class_std__basic_string = mod->getTypeByName("class.std::basic_string");
if (!StructTy_class_std__basic_string)
{
StructTy_class_std__basic_string = StructType::create(mod->getContext(), "class.std::basic_string");
}
LLVMContext &Context = mod->getContext();
Constant *c = mod->getOrInsertFunction("_Z5countSs",
Type::getVoidTy(Context),
StructTy_class_std__basic_string, NULL);
Function *funtPtr = cast<Function>(c);
这就是我调用CreateCall的方式:
Constant *a = ConstantDataArray::getString(mod->getContext(), instruction->getOpcodeName(), true);
builder.SetInsertPoint(instruction);
builder.CreateCall(count,a);