VC中
BSTR __declspec(dllexport)  __stdcall A(LPCTSTR InStr)
{
    CString Buf;
    Buf = "测试用例";
    return SysAllocString((BSTR)Buf.GetBuffer(0));
}VB中声明
Public Declare Function A Lib "MyDLL.DLL" (ByVal InStr As String) As String
VB中调用
Dim str1 as String
str1 = A("这个参数没有意义")
为什么出来的str1中前面为"测试用例"后面还有一大串不可显示字符或者乱码,怎么回事啊,我怎么去掉字符串的尾巴呢

解决方案 »

  1.   

    c中字符窜末尾是有结束符的
    在vb中需要对其长度进行修改
    把末尾去掉就行了
    Left(String,len(String)-1)
    大概就是这个意思了
    不知道函数用错了没
      

  2.   

    定义定长字符串,或者用chr(0)初始化字符串。
      

  3.   

    试一下==========================
    免费的学习、交流、源码、工具下载网站,欢迎大家访问!
    http://www.j2soft.cn/
      

  4.   

    BSTR __declspec(dllexport)  __stdcall A(LPCTSTR InStr)
    {
        CString Buf;
        Buf = "测试用例";
        return Buf.AllocSysString();
    }
      

  5.   

    James0001(虾米—什么时候成大虾?)的这种方法有没有谁试过,中英文结合的这种方式楼上的有没有考虑到呢
    我现在是知道,VB的String相当于VC的BSTR类型,但是如果返回的字节数为基数个的时候,整个String后面就多了一位,目前还没有找到解决方法
      

  6.   

    BSTR是Unicode,不用考虑中英文。
    CString 到Unicode 的转换由 AllocSysString 负责。