我正在尝试使用this png decoder,但我在使用此基本示例代码时遇到错误:
const char* path = "image.png";
int height = 256, width = 256;
vector<unsigned char> image;
unsigned error = lodepng::decode (image, unsigned(width), unsigned(height), path);
我不确定导致这种情况的原因,因为它与回购邮件的this example几乎相同。
答案 0 :(得分:0)
错误不言自明。您没有传递decode()
期望的正确参数。
查看您尝试调用的decode()
重载的实际声明(有3个重载可用):
unsigned decode(std::vector<unsigned char>& out, unsigned& w, unsigned& h,
const std::string& filename,
LodePNGColorType colortype = LCT_RGBA, unsigned bitdepth = 8);
特别注意第二个和第三个参数是由非const引用传递的。您的代码在传递给这些参数时声明int
变量类型转换为unsigned
。编译器必须创建临时unsigned
变量来保存值,但临时值不能绑定到非const引用。
因此,您的代码与decode()
重载(或任何重载)的声明不匹配。因此,可以找到接受您传入的参数的decode()
没有重载的错误消息是正确的。并且,如果您实际上更仔细地阅读了错误消息,它会向您显示编译器检测到的参数类型,您可以清楚地看到它与您尝试调用的decode()
重载的声明不匹配。
您需要将width
和height
变量从int
更改为unsigned
,并摆脱类型转换:
const char* path = "image.png";
unsigned height = 256, width = 256;
vector<unsigned char> image;
unsigned error = lodepng::decode (image, width, height, path);