MFC Unicode和多字符集中一个很恶心的问题
我使用了一个动态链接库。这个库是在多字符集环境下写的(唉,都是99年的老古董库了。)里面有一个函数
HRESULT DSStream_SaveToBmpFile(int iCardID, LPCTSTR szFileName);
而我用的编译器是VS2012,默认为UNICODE,然后为了能够使用这个库,在各位大神(说不定您上次还来回复过)的提示之下,我将整个库的头文件修改了,上面的函数被改为:
HRESULT DSStream_SaveToBmpFile(int iCardID, LPCSTR szFileName);
也就是将第二个参数由LPCTSTR 改成了LPCSTR,之所以这么改,是因为不修改它的话,编译会出错。
OK,然后我调用一个函数区得到一个LPCSTR 类型的变量:LPCSTR name = GetName();
得到name(假定得到的字符串是C:\\Image\\Image1245.bmp)后,我开始调用整个函数:
DSStream_SaveToBmpFile(name);
BUT,当函数执行完毕之后,name的值被修改成了一串无意义的字符“铪铪铪铪铪铪铪铪铪铪铪铪铪铪铪铪”
然后调用当然就出错了。
但是如果直接这么调用 :DSStream_SaveToBmpFile("12345.bmp");
函数会调用成功,在当前的工程目录下会找到该图片。
请问这是怎么了?我不明白为啥这个值会被修改。每次看到那个 哈哈哈哈 我就觉得它在笑我。