Qt 错误c2440:无法将常量字符[4]转换为字符*

Qt 错误c2440:无法将常量字符[4]转换为字符*,qt,visual-c++,qwt,Qt,Visual C++,Qwt,我有一个问题: 我在QT Creator(在MSVC2013中构建)中有一段代码,该代码第一次运行得很好,现在在其他计算机中使用更新的QT Creator(在MSVC2015中构建),请尝试告诉我以下错误: 错误:C2664:'wave_object wave_init(char*)':无法转换 参数1从字符串的“const char[4]”到“char*.”的转换 文本常量限定符(请参阅/Zc:strictStrings)” 这部分代码中存在错误: wave_object db4;

我有一个问题:

我在QT Creator(在MSVC2013中构建)中有一段代码,该代码第一次运行得很好,现在在其他计算机中使用更新的QT Creator(在MSVC2015中构建),请尝试告诉我以下错误:

错误:C2664:'wave_object wave_init(char*)':无法转换 参数1从字符串的“const char[4]”到“char*.”的转换 文本常量限定符(请参阅/Zc:strictStrings)”

这部分代码中存在错误:

wave_object db4;                            
wt_object wt;
db4 = wave_init("db4");                     
wt = wt_init(db4, "dwt", N, 4);            
setDWTExtension(wt, "sym");
setWTConv(wt, "direct");
该方法的定义如下:

wave_object wave_init(char* wname) {
wave_object obj = NULL;
int retval;
retval = 0;

if (wname != NULL) {
    retval = filtlength(wname);
}
我使用MinGW编译此文件,没有错误,在使用MSVC2013构建的QT Creator的计算机中,使用MSVC2013编译器也可以正常工作,但现在使用MSVC2015构建的QT Creator,MSVC2015编译器出现此错误

我需要使用与QT Creator构建的编译器相同的编译器,因为我使用的是QWT插件,并且必须使用相同的编译器

谢谢你的帮助!=)

在函数调用中:

db4 = wave_init("db4"); 
“db4”
参数是字符串文字,严格意义上是
const

您对函数的定义:

wave_object wave_init(char* wname)
不将参数
wname
标识为
const

修改如下:

wave_object wave_init(const char* wname)

非常感谢您,简单而实用的解决方案!但是,你知道为什么MinGW和MVC2013编译器的代码工作很好吗?我认为这是简单的编译器顺应性的演变-后来编译器逐渐变得更符合(这往往意味着更严格)。它是一个特定的一致性特征在Visual C++ 2015或更高版本。您甚至可以关闭它:
/Zc:strictStrings-
以返回到您在VS 2013中看到的旧的不一致行为。看见