我的dll中有一个函数
char* _stdcall get1()
{
char* s="get";
return s;
}
或者
CString _stdcall get1()
{
CString s="get";
return s;
}
可是调用我用vb写的一个exe时,总是出现内存错误,怎么回事啊?VB中这么声明
Public Declare Function get1 Lib "Test1" () As String

解决方案 »

  1.   

    什么意思?
    非MFC的dll不可以么?
      

  2.   

    局部变量的生命周期只在函数体内,返回指向局部变量的指针当然会出内存越界错了。
    char* _stdcall get1()
    {
    char* s= new char[100];
             strcpy(s, "get");
    return s;
    }
    或者
    CString _stdcall get1()
    {
    return new CString("get");
    }
      

  3.   

    CString _stdcall get1()
    {
    CString s="get";
    return s;
    }
    ----------------------
    这个肯定不对,vb里面的cstring与vc不是一个东西,vc的BSTR才是vb的string,所以:
    CString _stdcall get1()
    {
    return new CString("get");
    }
    这个在vb里面会出问题
      

  4.   

    char* _stdcall get1()
    {
    char* s= new char[100];
             strcpy(s, "get");
    return s;
    }
    这个要看vb里面的char *是怎么定义的,不要定义成
    Public Declare Function get1 Lib "Test1" () As String