C语言编写DLL,返回字符串以\0结束符结尾

C语言编写DLL,其中一个函数返回字符串以\0结束符结尾(abc\0),用VB调用DLL的时候返回的字符串因为带\0,len()方法计算字符串长度为实际长度+1,也就是\0结束符被当作字符计算了,在VB中可以用replace("字符串",Chr(0),"")来处理。
现在我是想VB 不处理,而C编写的DLL返回字符串不带\0结束符,请问怎么办?
我用delphi编写的DLL,调用返回的正常。

使用字符串数组 char[]var ,初始化不能用字符串("abc"),用{'a','b','c'},带长度和var,就行了,

就不应该返回\0,而是直接返回字符串。

在VB里处理不要用Replace,而是用s = Left(s, Instr(s, Chr(0)) - 1),C语言靠\0作为字符串的结束符,如果没有\0,那么会和之后没有初始化的内存混淆在一起反而不好判断。
如果你VB调用觉得不方便,不妨封装一个函数使用。

是通过 Declare 语句声明函数的标准Dll?
1)你应该把参数声明为 String 类型,VB 会自动进行末尾 \0 的处理。
2)VB 用 Space() 或 String() 函数创建供写入的字符串缓冲区时,不需要包含 \0 的长度。