获取llvm中函数的指针

获取llvm中函数的指针,llvm,Llvm,我试图获取一个指向函数的指针,该函数返回一个void,并且有一个字符串作为参数。代码编译成功,但运行pass时失败,出现以下错误: 断言`(i>=FTy->getNumParams()| | FTy->getParamType(i)==Args[i]->getType())&&“调用具有错误签名的函数!”失败。 有人能帮忙吗。如何正确创建此类函数的签名 StructType *StructTy_class_std__basic_string = mod->getTypeBy

我试图获取一个指向函数的指针,该函数返回一个void,并且有一个字符串作为参数。代码编译成功,但运行pass时失败,出现以下错误:

断言`(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);

你能给我看一下你的通话指示吗?我意识到这就是我做错的地方。你能建议一下他们应该叫什么函数吗?假设我必须使用变量(const char*a=“hello”)中包含的字符串调用此函数。在这种情况下,我的CreateCall应该是什么样子?我更新了代码。你现在能查一下吗。谢谢。
            Constant *a = ConstantDataArray::getString(mod->getContext(), instruction->getOpcodeName(), true);
            builder.SetInsertPoint(instruction);
            builder.CreateCall(count,a);