做一个DLL,要返回数据,准备用LPBYTE的类型,dll定义为BOOL EXPORTED_DLL_FUNCTION ReadState (unsigned int iNo,LPBYTE lpDataBuff,unsigned int iBuffLen)。
在vb里调用,vb里这样定义Public Declare Function ReadState Lib "ReadDll.dll" (ByVal iNo As Long, ByRef lpDataBuff As String, ByVal iBuffLen As Long) As Boolean在vc中,
CString s("abc");
lpDataBuff= (LPBYTE)(LPCTSTR)s;在vb里
j = ReadState(Val(Text3.Text), b, 720)但返回为空,求教高手

解决方案 »

  1.   

    lpDataBuff= (LPBYTE)s.GetBuffer(1);
      

  2.   

    试试
    CString s("abc");
    char aa[256];
    strcpy(aa, s);
    lpDataBuff= (LPBYTE)aa;
      

  3.   

    才看懂你的意思...
    你说的返回是指参数lpDataBuff?
    那在dll中
    strcpy(lpDataBuff,"abc");
      

  4.   

    不行的,error C2664: 'strcpy' : cannot convert parameter 1 from 'unsigned char *' to 'char *'
    ,如果对,这样和3楼的不是一样吗?
      

  5.   

    不一样,调用完以后aa空间会释放,
    你在调用这个函数前须确认已经分配了空间
    strcpy((char*)lpDataBuff,"abc");这样试一下
      

  6.   

    lpDataBuff= (LPBYTE)s.GetString();