我在vb中调用vc的dll vc
---------------------------------
int sum(int a, int b)
string str(string s)
-------------------------------
调用sum的时候没问题 结果也能得到
调用str 的时候 返回值 是随机的乱码 哪位给写个 str 的例子供参考一下

解决方案 »

  1.   

    建议你个把string str(string s)改成void str(const char* s,char* buf)
    private declare sub str lib "xxx.dll" (byval s as string,byval buf as string)dim sOut as string
    sOut=space$(255)
    str "hello",sOut
      

  2.   

    老大 照你的方法改了 
    并且我在vc里直接 buf = "aaaaa";
    但是得到的还是空值
      

  3.   

    int __stdcall get_string(char * buff)private declare function get_string lib "xxx.dll" (byval buff as string) as longdim mystring as string * 1024
    dim n as longn = get_string(mystring)
    msgbox left(mystring, n)
      

  4.   

    .......vc里面要
    strcpy(buf,"aaaa");
      

  5.   

    string str(string s)建议用LPCSTR str(LPCSTR)还有注意如果是void形函数VB中要SUB
      

  6.   

    to:  of123() 老大 按你的方法弄了 可得到的是空值vc
    ----------------------
    int __stdcall get_string(char * buf)
    {
    unsigned char digest[10] = "aaaaaaaaa";
    buf = (char*)digest; return 10;
    }vb
    ------------------------
    Private Declare Function get_string Lib "xxx.dll" (ByVal buf As String) As LongDim mystring As String * 1024
    Dim n As Longn = get_string(mystring)
    MsgBox Left(mystring, n)
      

  7.   

    再说一次...
    .......vc里面要
    strcpy(buf,"aaaa");int __stdcall get_string(char * buf)
    {
    unsigned char digest[10] = "aaaaaaaaa";
    //buf = (char*)digest;
    strcpy(buf,digest);
    return 10;
    }
      

  8.   

    对,VC 函数有问题。int __stdcall get_string(unsigned char * buf)
    {
    unsigned char digest[10] = "aaaaaaaaa";
    for(int i=0;i<10;i++) buf[i]=digest[i];
    return 10;
    }