VC写的dll,vb怎么不能调用呢?100分
我用vc写了一个dll,当我用vb去调用时,他没有报错,却自动的结束了这个进程。主要程序如下:
extern "C" _declspec(dllexport) BSTR __stdcall gustring (uchar *src, int srcsize)
{
unsigned char *p;
unsigned int uc;
unsigned char *dest;
int *destsize=0;
int zflag;
p = src;
p[srcsize]='\0';
for(zflag=0;zflag<srcsize;zflag++){
if (*p >= 0x30 && *p <= 0x39 ||
*p >= 0x41 && *p <= 0x5a ||
*p >= 0x61 && *p <= 0x7a ||
*p == 0x2d) {
//数字、字母处理
dest++;
p++;
*dest=*p;
(*destsize)++;
}
else if (*p >= 0x81 && *p < 0xff) {
//汉字处理
gbk_mbtowc (&uc, p, 2);
*dest++ = (u_codep)uc;
(*destsize)++;
p+=2;
}
else {//特殊字符处理
fprintf(stderr, "%04x\n", *p);
p++;
}
}
return SysAllocString((BSTR)p);
}
当我将return SysAllocString((BSTR)p); 放在dest++;和p++;之后时,是没有错误的,他能正确的输出我想得到的答案,但是当把return SysAllocString((BSTR)p); 放在*dest=*p;后边时,他就悄声无息的结束了整个vb运行程序。
我都调试了好几天了,还是没有结果,希望大家能帮我。
这个程序主要是进行中文到unicode的转换,当然如果编译的话,还需要几个头文件,如果哪位有兴趣,可以和我联系,我会提供编译需要的头文件。
QQ:228039115 E-Mail:raisuny@sina.com