VC++2013调试和发布版本

VC++2013调试和发布版本,c++,visual-c++,C++,Visual C++,在其他编程领域工作了几年后,我开始钻研VC++了。我对从调试版本到发布版本时出现的错误感到困惑。我可能在做些傻事 例如,此代码适用于调试编译: ofn.lpstrFile = (LPSTR)title; 但是,如果我进入释放模式,我会得到一个错误,必须输入一个W: ofn.lpstrFile = (LPWSTR)title; 我做错了什么?这不是一个MFC程序,它实际上只是一个非常简单的程序,我读取一个文件,从中获取信息以消除另一个文件的某些部分,然后将最后一个文件写入光盘。这是因为调试和发

在其他编程领域工作了几年后,我开始钻研VC++了。我对从调试版本到发布版本时出现的错误感到困惑。我可能在做些傻事

例如,此代码适用于调试编译:

ofn.lpstrFile = (LPSTR)title;
但是,如果我进入释放模式,我会得到一个错误,必须输入一个W:

ofn.lpstrFile = (LPWSTR)title;

我做错了什么?这不是一个MFC程序,它实际上只是一个非常简单的程序,我读取一个文件,从中获取信息以消除另一个文件的某些部分,然后将最后一个文件写入光盘。

这是因为调试和发布配置中有不同的设置。调试配置设置为在版本配置使用Use Unicode字符集时不设置字符集


要更改字符集,请转到项目属性,选择您的配置,然后从“配置属性”>“常规”>“字符集”中为所有配置选择相同的字符集。

这是因为调试和发布配置中的设置不同。调试配置设置为在版本配置使用Use Unicode字符集时不设置字符集


要更改字符集,请转到项目属性,选择您的配置,然后从“配置属性”>“常规”>“字符集”中为所有配置选择相同的字符集。

无论哪种方式,这都是错误的。简单的回答是UNICODE是在一个中定义的,但首先使用宽字符串与Windows API交互,并转换您需要的任何内容,而不是强制转换它。这不是UNICODE项目,它是一个多字节字符集项目。@user792826在Windows中尤其如此,多字节字符集是UTF-16 little endian。@Qix:这显然是不正确的。MBCS可以是Unicode以外的任何东西。特别是,所有MBC都是ASCII的超集,唯一的Unicode编码UTF-8(ASCII的超集)在WIndows上是不受支持的MBC。这两种方式看起来都是错误的。简单的回答是UNICODE是在一个中定义的,但首先使用宽字符串与Windows API交互,并转换您需要的任何内容,而不是强制转换它。这不是UNICODE项目,它是一个多字节字符集项目。@user792826在Windows中尤其如此,多字节字符集是UTF-16 little endian。@Qix:这显然是不正确的。MBCS可以是Unicode以外的任何东西。特别是,所有MBC都是ASCII的超集,唯一的Unicode编码UTF-8(ASCII的超集)在WIndows上不受支持;如果希望它们在两种配置中都相同,则必须在两种配置中都进行更改。一种简单的方法是使用Visual Studio顶部的下拉菜单,选择所有配置,然后更改要应用于所有配置的任何选项。啊-完成了-谢谢!我忘记了调试版本和发布版本可以有不同的设置。将在3分钟内将此标记为正确答案…这适用于所有设置;如果希望它们在两种配置中都相同,则必须在两种配置中都进行更改。一种简单的方法是使用Visual Studio顶部的下拉菜单,选择所有配置,然后更改要应用于所有配置的任何选项。啊-完成了-谢谢!我忘记了调试版本和发布版本可以有不同的设置。将在3分钟内将此标记为正确答案。。。