在llvm中获取指向函数的指针

时间:2015-10-25 04:11:49

标签: llvm

我正在尝试获取一个指向函数的指针,该函数返回一个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);

0 个答案:

没有答案