導航:首頁 > 源碼編譯 > 代碼編譯出版本號

代碼編譯出版本號

發布時間: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添加就行了。

閱讀全文

與代碼編譯出版本號相關的資料

熱點內容
成都市區建成面積演算法 瀏覽:658
智能家居單片機 瀏覽:95
買男裝用什麼app好 瀏覽:853
文件夾合並了怎麼拆開 瀏覽:256
波段副圖源碼無未來函數 瀏覽:86
livecn伺服器地址 瀏覽:257
程序員這個工作真的很吃香嗎 瀏覽:844
程序員和數學分析師待遇 瀏覽:678
壓縮氣彈簧怎麼拆 瀏覽:321
華為公有雲伺服器添加虛擬ip 瀏覽:209
程序員和運營哪個累 瀏覽:24
抖音安卓信息提示音怎麼設置 瀏覽:454
光速虛擬機的共享文件夾 瀏覽:248
程序員培訓機構發的朋友圈真實性 瀏覽:742
天乾地支簡單演算法 瀏覽:299
下載個壓縮文件 瀏覽:300
普通人電腦關機vs程序員關機 瀏覽:628
米酷建站源碼 瀏覽:115
氫氣app怎麼搜搭配 瀏覽:619
pdf綠盟 瀏覽:506