导航:首页 > 源码编译 > 代码编译出版本号

代码编译出版本号

发布时间:2022-10-08 06:02:54

⑴ 我的delphi程序编译了怎么版本号没有变啊

Project -> Options ->Version Info ->勾选"Include version information in project" 和 "Auto-increment build number"两个复选框
这样 全编译 也就是 Build all Projects 的时候 文件的版本号会自动加1的
楼主可以试一下,有问题再Hi我

⑵ 怎么知道java class文件JDK编译的版本号

首先用一些二进制查看器打开class文件,比如od或者hexmp工具。

od -x hello.class
或者
hexmp hello.class
我们会看到类似于下面的输出:
feca beba 0000 3300

这里我们看到前四个字节是Java class的特殊符号,叫做magic字段,用来告诉JVM这是个class文件,之后的两个字节是minor版本号,再之后的两个字节是major版本号,我们看到时33,对应下表我们知道33时JDK1.7编译的版本号。

十六进制
JDK1.5 31
JDK1.6 32
JDK1.7 33
JDK8 34

因为Java是向后兼容的,所以高版本的兼容低版本的,所以有时候你遇到java报: unsupported major.minor version 51,那就是你用低版本的虚拟机去运行高版本JDK编译的class文件了,所以低版本的虚拟机就抱怨了。这里的51是十进制,也就是十六进制的33,及对应JDK1.7,如果出现这种错误,你肯定是使用低于1.7版本的虚拟机去运行这个了。

⑶ 我的delphi程序编译了怎么版本号没有变啊

你可以用下面的方式去取一下版本号,应该没什么问题!!!
定一个版本信息结构:
type

PFixedFileInfo = ^TFixedFileInfo;

TFixedFileInfo = record

dwSignature : DWORD;

dwStrucVersion : DWORD;

wFileVersionMS : WORD; // 次版本号

wFileVersionLS : WORD; // 主版本号

wProctVersionMS : WORD; // 建立次数(build)

wProctVersionLS : WORD; // 发行次数(release)

dwFileFlagsMask : DWORD;

dwFileFlags : DWORD;

dwFileOS : DWORD;

dwFileType : DWORD;

dwFileSubtype : DWORD;

dwFileDateMS : DWORD;

dwFileDateLS : DWORD;

end; // TFixedFileInfo

下面是取版本信息函数

function FileInfo( const FileName :String ) : TFixedFileInfo;

var

dwHandle, dwVersionSize : DWORD;

strSubBlock : String;

pTemp : Pointer;

pData : Pointer;

begin

strSubBlock := ';

// 取得文件版本信息的大小

dwVersionSize := GetFileVersionInfoSize( PChar( FileName ), dwHandle );

if dwVersionSize <> 0 then

begin

GetMem( pTemp, dwVersionSize );

try

//取文件版本信息

if GetFileVersionInfo( PChar( FileName ),dwHandle,

dwVersionSize,pTemp ) then

//查询文件版本信息

if VerQueryValue( pTemp,PChar( strSubBlock ),

pData,dwVersionSize ) then

Result := PFixedFileInfo( pData )^;

finally

FreeMem( pTemp );

end; // try

end; // if dwVersionSize

end;

调用例子:

var

f1:string;

x :TFixedFileInfo;

begin

f1 := Application.ExeName;

x := FileInfo( f1 );

ShowMessage( f1 +

#13#10 'Version: ' + IntToStr( x.wFileVersionLS ) + '. ' +

IntToStr( x.wFileVersionMS ) +

#13#10 'Release: ' + IntToStr( x.wProctVersionLS) +

#13#10 'Build: ' + IntToStr( x.wProctVersionMS ) );

end;

**********************************

获取文件版本信息

type

TFileInfo = packed record

CommpanyName: string;

FileDescription: string;

FileVersion: string;

InternalName: string;

LegalCopyright: string;

LegalTrademarks: string;

OriginalFileName: string;

ProctName: string;

ProctVersion: string;

Comments: string;

VsFixedFileInfo:VS_FIXEDFILEINFO;

UserDefineValue:string;

end;

function GetFileVersionInfomation(const FileName: string; var info: TFileInfo;UserDefine:string= ' '):

boolean;

const

SFInfo= ';

var

VersionInfo: Pointer;

InfoSize: DWORD;

InfoPointer: Pointer;

Translation: Pointer;

VersionValue: string;

unused: DWORD;

begin

unused := 0;

Result := False;

InfoSize := GetFileVersionInfoSize(pchar(FileName), unused);

if InfoSize > 0 then

begin

GetMem(VersionInfo, InfoSize);

Result := GetFileVersionInfo(pchar(FileName), 0, InfoSize, VersionInfo);

if Result then

begin

VerQueryValue(VersionInfo, ' ', Translation, InfoSize);

VersionValue := SFInfo + IntToHex(LoWord(Longint(Translation^)), 4) +

IntToHex(HiWord(Longint(Translation^)), 4) + ';

VerQueryValue(VersionInfo, pchar(VersionValue + 'CompanyName '), InfoPointer, InfoSize);

info.CommpanyName := string(pchar(InfoPointer));

VerQueryValue(VersionInfo, pchar(VersionValue + 'FileDescription '), InfoPointer, InfoSize);

info.FileDescription := string(pchar(InfoPointer));

VerQueryValue(VersionInfo, pchar(VersionValue + 'FileVersion '), InfoPointer, InfoSize);

info.FileVersion := string(pchar(InfoPointer));

VerQueryValue(VersionInfo, pchar(VersionValue + 'InternalName '), InfoPointer, InfoSize);

info.InternalName := string(pchar(InfoPointer));

VerQueryValue(VersionInfo, pchar(VersionValue + 'LegalCopyright '), InfoPointer, InfoSize);

info.LegalCopyright := string(pchar(InfoPointer));

VerQueryValue(VersionInfo, pchar(VersionValue + 'LegalTrademarks '), InfoPointer, InfoSize);

info.LegalTrademarks := string(pchar(InfoPointer));

VerQueryValue(VersionInfo, pchar(VersionValue + 'OriginalFileName '), InfoPointer, InfoSize);

info.OriginalFileName := string(pchar(InfoPointer));

VerQueryValue(VersionInfo, pchar(VersionValue + 'ProctName '), InfoPointer, InfoSize);

info.ProctName := string(pchar(InfoPointer));

VerQueryValue(VersionInfo, pchar(VersionValue + 'ProctVersion '), InfoPointer, InfoSize);

info.ProctVersion := string(pchar(InfoPointer));

VerQueryValue(VersionInfo, pchar(VersionValue + 'Comments '), InfoPointer, InfoSize);

info.Comments := string(pchar(InfoPointer));

if VerQueryValue(VersionInfo, ', InfoPointer, InfoSize) then

info.VsFixedFileInfo := TVSFixedFileInfo(InfoPointer^);

if UserDefine <> ' ' then

begin

if VerQueryValue(VersionInfo,pchar(VersionValue+UserDefine),InfoPointer,InfoSize) then

info.UserDefineValue:=string(pchar(InfoPointer));

end;

end;

FreeMem(VersionInfo);

end;

end;

调用演示:

procere TForm1.Button1Click(Sender: TObject);

var

info: TFileInfo;

begin

if OpenDialog1.Execute then

begin

if GetFileVersionInfomation(opendialog1.FileName, info, 'WOW Version ') then

begin

Listbox1.Items.Add(OpenDialog1.FileName);

ListBox1.Items.Add( 'Comments: ' + info.Comments);

ListBox1.Items.Add( 'CommpanyName: ' + info.CommpanyName);

ListBox1.Items.Add( 'FileDescription: ' + info.FileDescription);

ListBox1.Items.Add( 'FileVersion: ' + info.FileVersion);

ListBox1.Items.Add( 'InternalName: ' + info.InternalName);

ListBox1.Items.Add( 'LegalCopyright: ' + info.LegalCopyright);

ListBox1.Items.Add( 'LegalTrademarks: ' + info.LegalTrademarks);

ListBox1.Items.Add( 'OriginalFileName: ' + info.OriginalFileName);

ListBox1.Items.Add( 'ProctName: ' + info.ProctName);

ListBox1.Items.Add( 'ProctVersion: ' + info.ProctVersion);

ListBox1.Items.Add( 'UserDefineValue: ' + info.UserDefineValue);

if boolean(info.VsFixedFileInfo.dwFileFlags and vs_FF_Debug) then

listbox1.Items.Add( 'Debug:True ')

else

ListBox1.Items.Add( 'Debug:False ');

ListBox1.Items.Add( ' ');

end;

end;

end;

⑷ Keil下每编译一次,怎么做到程序版本号+1

这个需要结合其他命令才行。

Keil系列教程:
http://blog.csdn.net/column/details/13472.html

⑸ Java如何生成版本号比如0001 0002 0002

首先还是不太明白你说的这个“生成版本号”是什么意思,如果只是生成一个自增序列的话

1、如果有oracle数据库的话可以利用它的序列生成。

2、没有oracle,用redis也行。

3、没有数据库,那就写个文件来存取吧:

public class Test2 {

public static void main(String[] args) throws IOException {
System.out.println(getSequence("d:\test\sequence.txt"));
setSequence("d:\test\sequence.txt", "");
System.out.println(getSequence("d:\test\sequence.txt"));
}


//读取序列
public static String getSequence(String sequenceFile) throws IOException {
FileInputStream fileInputStream = null;
InputStreamReader inputStreamReader = null;
BufferedReader bufferedReader = null;
try {
File file = new File(sequenceFile);
fileInputStream = new FileInputStream(file);
inputStreamReader = new InputStreamReader(fileInputStream);
bufferedReader = new BufferedReader(inputStreamReader);
// 按行读取字符串
String str;
if ((str = bufferedReader.readLine()) != null) {
return str;
}
return null;
} catch (Exception e) {
e.printStackTrace();
return null;
} finally {
if (bufferedReader != null) {
bufferedReader.close();
}
if (inputStreamReader != null) {
inputStreamReader.close();
}
if (fileInputStream != null) {
fileInputStream.close();
}
}
}


//设置序列,如果传入的序列号为空,则在原序列的基础上+1
public static void setSequence(String sequenceFile, String sequence) throws IOException {
if (sequence == null || sequence.isEmpty()) {
String oriSequence = getSequence(sequenceFile);
Objects.requireNonNull(oriSequence);
sequence = String.format("%04d", Integer.valueOf(oriSequence) + 1);
}
FileOutputStream fileOutputStream = null;
OutputStreamWriter outputStreamWriter = null;
BufferedWriter bufferedWriter = null;
try {
File file = new File(sequenceFile);
fileOutputStream = new FileOutputStream(file);
outputStreamWriter = new OutputStreamWriter(fileOutputStream);
bufferedWriter = new BufferedWriter(outputStreamWriter);
bufferedWriter.write(sequence);
} catch (Exception e) {
e.printStackTrace();
} finally {
if (bufferedWriter != null) {
bufferedWriter.close();
}
if (outputStreamWriter != null) {
outputStreamWriter.close();
}
if (fileOutputStream != null) {
fileOutputStream.close();
}
}
}
}


代码又挤在一起了:

⑹ Delphi 7 编译生成可执行文件,无版本信息,如何处理才能出现版本信息

版本信息是在生成的可执行文件后,右键-属性-版本 里会显示的 ,或鼠标移到那个程序上面时也有显示,如果在Delphi里设置了版本号后还没显示,应该是你delphi的问题了,建议可以重装下试试 ,
我用的是D7,测试过是正常的。

⑺ 怎么查看编译的Linux内核源代码的版本信息

查看Linux内核源代码的顶层Makefile
VERSION = 3
PATCHLEVEL = 14
SUBLEVEL = 17
EXTRAVERSION =
NAME = Remembering Coco

⑻ C++或者VB编译dll或者lib的时候,如何加入版本号

打开这个DLL工程在菜单里选
Insert——Resource——Version
然后编辑你的Version就行了
=========================
我猜你的是static library吧?静态库是不能加入版本号的
========================
LIB有两种的,一种是由DLL导出的LIB库,一种是static lib;前者不包括任何操作代码,只有一些符号信息;后面是包括代码的LIB;前者的LIB有可能是带的版本号的,后者是没有版本号的;
以上纯粹个人理解

⑼ 软件的版本号怎么决定的

GNU
风格的版本号管理策略
当项目初版本时,
版本号可以为
0.1

0.1.0,
也可以为
1.0

1.0.0,
如果你为人很低调,
我想你会选择那个主版本号为
0
的方式;
当项目在进行了局部修改或
bug
修正时,
主版本号和子版本号都不变,
修正版本号加
1;
当项目在原有的基础上增加了部分功能时,
主版本号不变,
子版本号加
1,
修正版本号复位为
0,
因而可以被忽略掉;
当项目在进行了重大修改或局部修正累积较多,
而导致项目整体发生全局变化时,
主版本号加
1;
另外,
编译版本号一般是编译器在编译过程中自动生成的,
我们只定义其格式,
并不进行人为的控制.
Window
下的版本号管理策略
当项目初版时,
版本号为
1.0

1.00;
当项目在进行了局部修改或
bug
修正时,主版本号和子版本号都不变,
修正版本号加
1;
当项目在原有的基础上增加了部分功能时,
主版本号不变,
子版本号加
1,
修正版本号复位为
0,
因而可以被忽略掉;
当项目在进行了重大修改或局部修正累积较多,
而导致项目整体发生全局变化时,
主版本号加
1;
另外,
编译版本号一般是编译器在编译过程中自动生成的,
我们只定义其格式,
并不进行人为的控制.
另外,
还可以在版本号后面加入
Alpha,
Beta,
Gamma,
Current,
RC
(Release
Candidate),
Release,
Stable
等后缀,
在这些后缀后面还可以加入
1
位数字的版本号.
对于用户来说,
如果某个软件的主版本号进行了升级,
用户还想继续那个软件,
则发行软件的公司一般要对用户收取升级费用;
而如果子版本号或修正版本号发生了升级,
一般来说是免费的.

⑽ 如何在程序编译时自动加入版本号

可以在资源管理中添加版本资源,版本号是以资源的方式来添加的。在解决方案的项目中找到rc资源文件双击然后右键添加资源,找到Version添加就行了。

阅读全文

与代码编译出版本号相关的资料

热点内容
单片机有4个8位的io口 浏览:895
win10rar解压缩软件 浏览:164
plc教程pdf 浏览:665
pythonshell清屏命令 浏览:278
检测到加密狗注册服务器失败 浏览:203
解压后手机如何安装 浏览:518
极客学院app为什么下架 浏览:13
图片批量压缩绿色版 浏览:651
东北程序员帅哥 浏览:707
加密封条风噪小 浏览:974
安阳少儿编程市场 浏览:499
云服务器建设原理 浏览:259
javajunit4for 浏览:847
华为服务器如何进阵列卡配置 浏览:435
apache服务器ip地址访问 浏览:720
如何买到安卓手机预装软件 浏览:537
冤罪百度云不要压缩 浏览:89
苏州云存储服务器 浏览:178
解压收纳原声 浏览:387
java注册验证 浏览:377