extern "C" char* __stdcall GetSub(LPCSTR sFile)
{
char *rtnStr[80];
k=0;
for(i=0;i<11;i++)
{
for(j=0;j<9;j++)
{
rtnStr[k]=k;
k=k+1;
}
}
return *rtnStr;
//问题出现在这里!返回的*trnStr仅仅是指针地址。不含内容,如何把内容告诉VB?
}
{
char *rtnStr[80];
k=0;
for(i=0;i<11;i++)
{
for(j=0;j<9;j++)
{
rtnStr[k]=k;
k=k+1;
}
}
return *rtnStr;
//问题出现在这里!返回的*trnStr仅仅是指针地址。不含内容,如何把内容告诉VB?
}
让使用者传一个字符串进来
extern "C" char* __stdcall GetSub(LPCSTR sFile, char* szGet);
{
int GetCode[10][8];
char *rtnStr="AAAA";
char *str1="BBBB";
strcpy(rtnStr,str1);
return SysAllocString((BSTR)rtnStr);
}
给VB调用会出错,去掉:
char *str1="BBBB";
strcpy(rtnStr,str1);
正常返回AAAA。
请问问题出在哪里???
其中,szBuffer是从VB传来的缓冲,结果字符串就会赋值这里面,
lbufferSize是szBuffer的大小,在DLL中需要判断缓冲大小是否足够放置字符串。long __stdcall GetSub(const char* szFile, char* szBuffer, long lbufferSize)
{
char* aaa = "Test String"; if (strlen(aaa) >= lbufferSize)
return FALSE; strcpy(szBuffer, aaa);
return TRUE;
}在VB可以使用类似下面的方面调用。Dim strBuffer as String * 256
long lngResult = GetSub("xxxxx", strBuffer, 256);