C++ C2664错误c++;Visual Studio

C++ C2664错误c++;Visual Studio,c++,visual-studio-2013,c2664,C++,Visual Studio 2013,C2664,我正在尝试修改一个旧的MFC程序。在Visual Studio 2013中打开项目后,出现了许多以下类型的错误 在AviPlay.cpp中 #include "stdafx.h" #include "AviPlay.h" #define OPEN_AVI_VIDEO "open avivideo" BOOL initAVI() { return mciSendString(OPEN_AVI_VIDEO, NULL, 0, NULL) == 0; } 引发的错误是错误C2664:“MC

我正在尝试修改一个旧的MFC程序。在Visual Studio 2013中打开项目后,出现了许多以下类型的错误

在AviPlay.cpp中

#include "stdafx.h"
#include "AviPlay.h"

#define OPEN_AVI_VIDEO "open avivideo"
BOOL initAVI()
{
    return mciSendString(OPEN_AVI_VIDEO, NULL, 0, NULL) == 0;
}
引发的错误是错误C2664:“MCIERROR mciSendStringW(LPCWSTR,LPWSTR,UINT,HWND)”:无法将参数1从“const char[14]”转换为“LPCWSTR”

是否应将编译器选项的Strict设置为off,或其他编译器选项,以解决此错误?如果没有,我可以手动修改许多行代码。在这种情况下,在过去的15年中,有什么变化会使这样的代码以前可以,但现在不行


先谢谢你

LPCWSTR告诉您它需要的是wchar\t字符串,而不是char字符串。默认情况下,所有Windows API现在都接受wchar\u t字符串(unicode)。您可以在项目属性、常规页面、字符集中将其更改回字符字符串。将其设置为“使用多字节字符集”将使其正常工作。

您可以尝试将项目类型设置为多字节而不是unicode,但我不知道在使用MFC时这是否是有效的选项。项目可能设置为unicode字符集。这将导致您的程序链接到mciSendStringW的宽版本,而不是多字节版本的mciSendStringA。在“项目属性”“常规”“字符集”中设置为“多字节”修复了我的问题。非常感谢你!