zoukankan      html  css  js  c++  java
  • [心得]2010,这次坑了我一把

    准备写一个图片格式转换的程序。

    在网上下了个libpng,包括zlib。

    解压后放在一起,看了下projects目录里面的工程。

    用vs2008打开vstudiovstudio.sln提示文件版本太高,打开visualc71libpng.sln提示文件版本太低需要转换。

    怕转换出什么问题,遂用vs2010打开了前面的工程。

    在Debug模式下,编译生成,得到1个dll和2个lib。

    后来自己用vs2008写程序,发现编译木有问题,但是执行程序出现Unhandled exception。

    这是个很纠结的问题,原因可能有很多,一直debug不到,度娘也不知道。

    最后终于还是问谷哥问到了,是因为编译dll和lib的时候用的vs2010,可能在一些优化配置的设置上和2008的默认有些区别。

    我也懒得去一个一个对比到底是哪出了问题,直接用vs2010去写程序,果然也是没有问题。

    写好程序在Debug模式下跑得效果还行,但是想用静态生成,就改成了Release模式。结果无论是不是静态生成,程序都跑得有问题。网上好像也有人碰到过这样的问题,看后面回帖也没解决。

    png_read_png和png_write_png过不去,Debug的时候用Callstack看到是在fread函数里面调用_lock_file()函数的时候,有写地址冲突。

    这让我在哪去找到底是因为什么,但我还是做了最后的挣扎,重新用Release模式去编译生成dll和lib,再去编译我的程序,结果一样。。。

    (PS.这里意外发现,我在Debug模式下,使用Release模式编译的dll,也会有问题,-、-)

    实在没有办法,只好用2008打开低版本的工程,转换一下(好在没出什么问题),直接用Release模式生成dll和lib。

    再用2008创建自己的程序,Release模式和Debug模式都没有问题。

    不知道是vs2010优化做得太好,还是代码要求更严格,又或者是libpng库的问题,反正让人非常纠结。如果哪位好心大神知道其所以然,还请留言告知。

    一个简单的程序浪费了大量的时间,以后要注意了。

  • 相关阅读:
    文件的编码是一个怎样的机制
    MySQL——修改root密码的4种方法(以windows为例)
    python中nltk的下载安装方式
    VNC轻松连接远程Linux桌面
    Linux 查看磁盘分区、文件系统、磁盘的使用情况相关的命令和工具介绍
    shell脚本中>/dev/null的含义
    执行shell脚本时提示bad interpreter:No such file or directory的解决办法
    TabLayout+ViewPager的简单使用
    让listView gridView全部扩展开
    购物车中的观察者模式的应用
  • 原文地址:https://www.cnblogs.com/lvrcbl/p/3968221.html
Copyright © 2011-2022 走看看