VC6中,exe和dll的文件版本可在资源中指定.如何用代码指定呢?一个项目,包含数十个exe和dll,共享的版本号放在一个头文件中,是一个字符串.如何用代码指定每个文件的版本(就是文件管理器里文件属性页里看到的版本信息)?如果修改资源,太麻烦了.

解决方案 »

  1.   

    rc文件中也可以用宏的。
    在rc文件中包含 版本号的头文件中
    之后用rc文件中用宏进行替换
      

  2.   

    你既然有了头文件定义版本号,可以直接用.rc #include那个头文件,然后用这个版本号就可以了阿
      

  3.   

    我是要在生成DLL的源文件中加入代码完成需要。ATField(field):
    怎么使编译后的DLL使用我头文件中的版本号?
      

  4.   

    在头文件my_version.h中定义:
    #define MY_FILE_VERSION 1, 0, 0, 1 
    #define MY_PRODUCT_VERSION 1, 0, 0, 1 在rc文件前面加上#include "my_version.h"在rc文件中找到下面语句:
    VS_VERSION_INFO VERSIONINFO
     FILEVERSION 1,0,0,1
     PRODUCTVERSION 1,0,0,1
    把FILEVERSION和PRODUCTVERSION后面的数字修改为对应的宏:
    VS_VERSION_INFO VERSIONINFO
     FILEVERSION MY_FILE_VERSION
     PRODUCTVERSION MY_PRODUCT_VERSION
    这样,修改版本号只需要修改my_version.h然后重新build即可。
      

  5.   

    ATField(field) 的方法可以实现我要的功能。但资源文件在VC IDE里不能被修改和保存,否则自己所做的改动将会被取消。有没有什么代码可以实现此功能的?
      

  6.   

    有两个方法:
    方法1:修改.rc文件的编译选项,Configuration Properties->General->Tool改成Custom Build Tool,然后Apply,再在Custom Build Step里面调用自己写的脚本(比如Perl/Python脚本,当然自己用C/C++写也成)。这个脚本的作用是:
    1. 把目标.rc文件加以修改(修改方法跟我前面说的类似,加上一个头文件,然后修改FILE_VERSION/PRODUCT_VERSION为投文件中的宏,当然也可以直接读取某个文件中定义的版本好然后直接修改,也可以)
    2. 修改完毕后再调用资源编译器rc.exe,执行编译
    这样每次编译的时候都会自动作修改,就没有问题了方法2:写一个小工具,找到目录中所有.rc文件,修改PRODUCT_VERSION/FILE_VERSION为指定值,因为没有做其他修改,所以不会被VC重置。每次要修改版本的时候用这个工具作一次即可。
      

  7.   

    http://www.cnitblog.com/wangk/archive/2005/12/12/5306.html
    希望对你有帮助。
      

  8.   

    在workspace选择resouceview,打开"xx resouces"里的version修改FILEVERSION 1,0,0,1
     PRODUCTVERSION 1,0,0,1
      

  9.   

    没仔细看,理解错了,晕。
    获取可执行文件版本号:
    http://www.codeproject.com/file/VersionInfo.asp