我的程序的简单细分(直到崩溃的地方)看起来像这样.为简单起见,我删除了所有错误和边界检查:
int main(int argc,char *argv[]) { char* filename = argv[1]; png_structp png = png_create_write_struct(PNG_liBPNG_VER_STRING,NulL,NulL); png_infop info = png_create_info_struct(png); if (setjmp(png_jmpbuf(png))) { abort(); } // Output is 16-bit depth,greyscale format. png_set_IHDR( png,info,127,16,PNG_color_TYPE_GRAY,PNG_INTERLACE_NONE,PNG_COMPRESSION_TYPE_DEFAulT,PNG_FILTER_TYPE_DEFAulT ); // do the file stuff file *fp; errno_t error = fopen_s(&fp,filename,"wb"); png_init_io(png,fp); png_write_info(png,info); // <-- crashes here with "access violation writing location ..."
谢谢你的帮助!
codeSourcerer
解决方法 好的,我得到了这个问题的答案,这要归功于此处发布的另一个问题:libpng crashes on png_read_info()
在那里答案是:
If you don’t use the Visual Studio defaults your application must still be built with the default runtime option (/MD). If,for some reason,it is not then your application will crash insIDe libpng16.dll as soon as libpng trIEs to read from a file handle you pass in.
所以我重新编译了我的libpng,其属性 – >配置属性 – > C/C++ – >代码生成 – >运行时库设置为多线程DLL(/ MD)(不是调试版!!)
并为我的png-writer项目设置相同的内容.现在它正在工作,不再崩溃了.
干杯,codeSourcerer
@H_403_44@ 总结以上是内存溢出为你收集整理的c – libpng在png_write_into崩溃(Windows 10,VS2013,自建,所有测试都通过了)全部内容,希望文章能够帮你解决c – libpng在png_write_into崩溃(Windows 10,VS2013,自建,所有测试都通过了)所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)