本人写了段代码,用在DLL中
这段代码是为了测试utf8与gb转换,当执行这段代码时,excel就会崩溃
这段代码是为了测试utf8与gb转换,当执行这段代码时,excel就会崩溃
DLLIMPORT __stdcall char* HiWorld(char* a) { //char* b; strcpy(a,"这是一个测试!"); a=G2U(a); a=U2G(a); return a; }
而注释G2U及U2G两行后,就能正常运行,如:
DLLIMPORT __stdcall char* HiWorld(char* a) { //char* b; strcpy(a,"这是一个测试!"); //a=G2U(a); //a=U2G(a); return a; }
问一下什么原因?
解决方案
20
关键在这里:
//a=G2U(a); //a=U2G(a);
传进来的a,在传进来之前,是一个数组,还是一个char*类型的指针。
假如是数组,那么就相当于改变数组首地址,这个肯定是不行的。
char* HiWorld(char* a) { strcpy(a,"This is a test"); //这样做是可以的。 a = "abc"; //这样做事很危险的。 return a; } int main() { char a[MAX_PATH]; HiWorld(a); return 0; }
你应当把a=G2U(a) 改成strcpy之类的代码。