我有一个要调用的dll文件,如下所示。我想通过传递我的字符串来调用它。 MinGW在没有任何警告的情况下编译它,但运行它我得到“无效的用户缓冲区”消息。 我尝试以这种方式传递我的字符串:
int i = wrb(void *buf, int len)
char subtext[] = "red";
void *buf;
buf = subtext;
i = wrb(buf, 3);
它出了什么问题?
答案 0 :(得分:1)
也许它太小了?也许被调用的函数需要零终止,由于缓冲区很小,你没有得到它?
目前还不清楚被调用函数如何验证地址,这通常是不可能的。
您无需跳过buf
箍,数组名称subtext
会自动正确转换为void *
,因此请致电:
char subtext[4] = "red";
int i = wrb(subtext, sizeof subtext);
另请注意,不应重复魔术常量(如4
),尽可能使用sizeof
。