我写了一个库,六千行代码左右,
用vs2005编译出来的静态库非常大,十多M
而且release比debug版还要大的多,二十多M??在优化里选择 按最大速度优化
然后把内联函数全部取消内联放到cpp里实现
还是一样的大小,几乎没有改变。请问一下各位这可能是什么情况??
六千行的代码二十多M的静态库,这个好像不大正常吧。
当中没有用到任何的其它库,只是API和C++S标准库.

解决方案 »

  1.   

    很不正常
    我用vc2003静态編譯一個一萬多行代碼的dll,优化过后,只有700多KB啊你查一下depends查下,你都连了什么库
      

  2.   

    上面写错了,是用“最小化尺寸”优化的写了个测试程序
    链接出来的程序倒是不大
    一个窗口测试程序
    release出来只有280k
    用depends查看,只需要user32,gdi32,kernel32.dll三个库。
      

  3.   

    是不是用得太多memset这类的CRT函数了?这些函数内联的时候体积是很大的.
      

  4.   

    你写一个exe调用就知道结果了,lib大正常.
    最终编译出来的exe其实不大
      

  5.   

    刚刚发现一个问题
    运行时库选择 多线程dll 生成的lib
    反而比 运行时库选择 多线程 生成的lib还要大。所以目前我的困惑生成出来的静态lib超大 ,6000行代码生成十多二十m的lib
    release比debug版更大,二十多m.
    代码生成里的运行时库 选择多线程 生成的lib,反而比 选择多线程dll 更大,大几m。
      

  6.   

    是不是插入了什么ActiveX控件或者内嵌了什么资源?
      

  7.   

    没有插入activex也没有什么资源。。
      

  8.   

    能否把代码发给我看看,[email protected]
      

  9.   

    能否把代码发给我看看,[email protected]
      

  10.   

    Mackz 抱歉不能弄出来公司的代码
      

  11.   

    应该是用到了其他的库吧
    因为静态连接后,相应于直播从其他库把代码copy过来了
    而用depends查不到这些库...
      

  12.   

    注意程序配置中的设置:Configuration Properties -> General -> Whole Program Optimization
    Debug是:No Whole Program Optimization
    Release是:Use Link Time Code Generation
    把Release版改成跟Debug版一样,体积就下来了。
      

  13.   

    正常啊,我调用同事写的一个压缩和加密静态库,都有60多M,但是他的代码却也不是很多,估计都不超过1万行。
    我程序里面调用了他的静态库函数,编译出来的exe也就几百k,这个估计没有什么问题的。