使用opencv,不想携带opencv提供的dll,于是编译出了两个lib,opencv_core220.lib,opencv_highgui220.lib  结果发现lib的体积很大,两个lib加起来有14+MB... 而opencv提供的这两个同名的dll加起来才2+MB  差距很大啊......  是因为我生成的lib有错误造成的吗?  还是lib本来就会比同样代码的dll大很多?    :)

解决方案 »

  1.   

    debug 的原因吧,release就小了
      

  2.   

    是release啊....
    是因为设置问题造成的吗?  
    如果本来就应该这么大...我还是去用提供的dll吧....刚才试着生成了一下2.3版本的这两个lib...结果一共44.6MB...这也太要命了吧
      

  3.   

    如果静态编译的话是不小的
    但是生成exe后就不大了,放心用吧
      

  4.   

    哦 这样啊  我试试去刚才想把dll放到资源文件里,然后释放出来,但是似乎行不通,缺少dll,程序根本就启动不了,更释放不出来...
      

  5.   

    哦 这样啊  我试试去刚才想把dll放到资源文件里,然后释放出来,但是似乎行不通,缺少dll,程序根本就启动不了,更释放不出来...
      

  6.   

    估计是你编译选项设置的问题。原装的 DLL,它所依赖的其它库估计也是动态连接的,而你编译的 LIB,估计连所有依赖的上游库都砸在一起了。
    ————————————————————————————————
    基于CSDN论坛提供的插件扩展功能,自己做了个签名档工具,分享给大家,欢迎技术交流 :)
      

  7.   

    试了试把dll加到资源文件里在释放出来,需要设置延迟加载
    程序能正常打开,但是用到opencv的时候,就会出现错误   未知的软件异常....
      

  8.   

    在我的电脑上可以用(win7)
    换到另一台xp的电脑上就会有未知异常...
      

  9.   

    win7+vs2010+opencv2.2的程序,在win7上跑没有问题,但是在xp的笔记本上就会出现未知的程序异常(0xc06d007e),我以为是在win7下编译的缘故,就想在xp下编译试试. 
    给xp笔记本装好了vs2010,编译,果然就可以用了,但是紧接着发现win7上编译的那个也可以在笔记本上用了.
    于是又在xp的虚拟机上实验,刚开始重现了原来在笔记本上的错误"未知的程序异常(0xc06d007e)",我又把使用opencv的代码去掉,再试,竟然就可以用了... 我又给虚拟机装上.net framework 4.0,把去掉的opencv的代码添加回去,再试,未知的异常又出现了...我编译的时候选了"在静态库中使用MFC",opencv的代码是咱们论坛给的canny例程,在装有vs2010的win7和xp下都可以用,在只装有framework的xp下不能用...求解...