⑴ VB的程序既可以編譯方式運行,也可以解釋方式運行,編譯和解釋具體什麼意思
編譯是直接生成目標文件,解釋是在vb中運行,不生成目標文件,你要想做成一個程序,必須得編譯要不只能打開 vb後運行,離開vb後就只是些代碼
⑵ VB採用什麼編程方法和運行機制
VB有兩種版本,在6.0以前都是基於對象的,採用事件驅動的編程方式,其最終編譯的是和平台有關的本地代碼。
.NET版本後,VB是完全面向對象的,擁有豐富的類操作能力,同樣也是事件驅動的,其最終編譯的是基於CLR運行的託管代碼的中間層語言(IL)。
⑶ vb應用程序除了以解釋方式進行,還可以以什麼方式進行
vb應用程序除了以解釋方式進行,還可以編譯成本機代碼,在計算機的系統下直接運行。
將工程編譯成本機代碼
如果擁有VisualBasic的專業版或企業版,既可以將代碼編譯成標準的VisualBasic 偽代碼格式,也可以編譯成本機代碼格式。本機代碼編譯提供了偽代碼編譯所沒有的關於優化和調試的幾個選項。
P-code或偽代碼,是介於Basic 程序中的高級指令和計算機處理器執行的低級本機代碼之間的一種中間步驟。在運行時刻,VisualBasic 將每一句偽代碼轉換成本機代碼。如果將程序直接編譯成本機代碼,則取消了偽代碼這一中間步驟。
可以使用象在VisualC++中提供的調試環境之類的標準的本機代碼調試工具來調試編譯後的本機代碼。也可以使用例如在VisualC++ 的語言中提供的優化和調試本機代碼的選項。例如,可以根據代碼運行速度和大小優化代碼。
注意所有用VisualBasic創建的工程都使用運行時DLL (MSVBVM60.DLL)服務。在DLL所提供的服務當中有您應用程序的啟動和關閉代碼、窗體和內部控制項的功能,以及 Format和CLng
的運行時函數。
用「本機代碼」選項來編譯工程意味著您寫的代碼將完整地編譯為處理器晶元的本地指令,而不是編譯為p-code。這將大大加速循環和數學計算,並可以加速對 MSVBVM60.DLL提供的服務程序的調用。然而,這並不能減少對DLL的需要。
要將工程編譯成本機代碼,請按照以下步驟執行:
1.在「工程」窗口,選擇希望編譯的工程。
2.從「工程」菜單選擇「工程屬性」。
3.在「工程屬性」對話框,單擊「編譯」選項卡。
⑷ 樓上說的不對,VB不是解釋性語言,它也是編譯性語言! 什麼是解釋性語言什麼是編譯性語言還有什麼語言
計算機不能直接理解高級語言,只能直接理解機器語言,所以必須要把高級語言翻譯成機器語言,計算機才能值型高級語言編寫的程序。
翻譯的方式有兩種,一個是編譯,一個是解釋。兩種方式只是翻譯的時間不同。編譯型語言寫的程序執行之前,需要一個專門的編譯過程,把程序編譯成為機器語言的文件,比如exe文件,以後要運行的話就不用重新翻譯了,直接使用編譯的結果就行了(exe文件),因為翻譯只做了一次,運行時不需要翻譯,所以編譯型語言的程序執行效率高。
解釋則不同,解釋性語言的程序不需要編譯,省了道工序,解釋性語言在運行程序的時候才翻譯,比如解釋性basic語言,專門有一個解釋器能夠直接執行basic程序,每個語句都是執行的時候才翻譯。這樣解釋性語言每執行一次就要翻譯一次,效率比較低。
什麼是腳本語言?
1.腳本語言(javaScript,VBscript等)介於HTML和C,C++,Java,C#等編程語言之間。
HTML通常用於格式化和鏈結文本。而編程語言通常用於向機器發出一系列復雜的指令。
2.腳本語言與編程語言也有很多相似地方,其函數與編程語言比較相象一些,其也涉及到變數。與編程語言之間最大的區別是編程語言的語法和規則更為嚴格和復雜一些.
3.與程序代碼的關系:腳本也是一種語言,其同樣由程序代碼組成。
註:腳本語言一般都有相應的腳本引擎來解釋執行。 他們一般需要解釋器才能運行。JAVASCRIPT,ASP,PHP,PERL都是腳本語言。C/C++編譯、鏈接後,可形成獨立執行的exe文件。
4.腳本語言是一種解釋性的語言,例如vbscript,javascript,installshield script等等,它不象c\c++等可以編譯成二進制代碼,以可執行文件的形式存在.
腳本語言不需要編譯,可以直接用,由解釋器來負責解釋。
5.腳本語言一般都是以文本形式存在,類似於一種命令.
舉個例子說,如果你建立了一個程序,叫aaa.exe,可以打開.aa為擴展名的文件.
你為.aa文件的編寫指定了一套規則(語法),當別人編寫了.aa文件後,你的程序用這種規則來理解編寫人的意圖,並作出回應.那麼,這一套規則就是腳本語言.
JAVA語言
java很特殊,java程序也需要編譯,但是沒有直接編譯稱為機器語言,而是編譯稱為位元組碼,然後用解釋方式執行位元組碼。Java既可以被編譯,也可以被解釋。通過編譯器,可以把Java程序翻譯成一種中間代碼 - 稱為位元組碼 - 可以被Java解釋器解釋的獨立於平台的代碼。通過解釋器,每條Java位元組指令被分析,然後在計算機上運行。只需編譯一次,程序運行時解釋執行。下圖說明了它是如何工作的:
可以把Java位元組碼看作運行在Java虛擬機(Java VM)上的機器代碼指令。每中Java解釋器,不管是Java開發工具還是可以運行Java小應用程序的Web瀏覽器,都是一種Java VM的實例。JavaVM也可以由硬體實現。
Java位元組碼使「寫一次,到處運行」成為可能。可以在任何有Java編譯器的平台上把Java程序編譯成位元組碼。這個位元組碼可以運行在任何Java VM上。例如,同一個Java程序可以運行在WindowsNT、Solaris和Macintosh上。
Java平台
平台是程序運行的硬體或軟體環境。Java平台與大多數其它平台不同之處在於它是運行於其它基於硬體平台的純軟體平台。大多數其它平台是硬體和操作系統的結合。
Java平台由兩部分組成:
* Java虛擬機(Java VM)
* Java應用程序界面(Java API)
我們已經介紹了Java VM,它是Java平台的基礎,可以移植到各種基於硬體的平台上。Java API是軟體組件的集合,它們提供了很多有用的功能,如圖
形用戶界面(GUI)。Java API被分組為相關組件的庫(包)。
下圖描述了一個運行在Java平台上的Java程序,如應用程序(application)或小應用程序(applet)。如圖中顯示的,JavaAPI和VM把Java程序從硬體依賴中分離出來。
作為一種獨立於平台的環境,Java比本地代碼慢一些。然而,聰明的編譯器、很好地調制過的解釋器和即時位元組碼編譯器可以在不犧牲可移植性的條件下使Java的表現接近本地代碼。
⑸ vb怎麼做個vb編譯器
如果你要自己做程序編譯的話很難,就算調用c2.exe和link.exe也沒用,因為VB
在調用之前已經在臨時目錄下生成了一堆看不懂的東西。
但你可以調用VB主程序的命令行來生成程序,如你要生成的程序在D盤根目錄,工程文件為
1.vbp那你可以在CMD里打VB6.exe /make D:\1.vbp
具體的可以參照VB6.exe /?
附:
VB的編譯過程大致如下,當我們在編輯環境中編寫完代碼後,VB調用C2將所有的模塊(包括CLASS)編譯成OBJ文件(能夠為機器語言識別的代碼)。一下是C2的一些編譯參數說明(E文):
- the the name of the prefixed one used for the names of the rowscontaining ' precompilato', one
risen of intermediate tails (from which name of the switch) temporary; these rows are 5 and finish withi suffissi GL, SY, FORMER, IN and DB; they contained are not documented
- f the name of the rows to compile
- W3 warning level 3, level of ' attenzione' dedicating to i warnings
- Gy it qualifies the connection to level of function (function-level linking)
- G5 optimization for the Pentium
- Gs4096 it allows not to insert the code for the control of stack (stack probe) if a function does not
use more than 4096 byte of stack
- dos not documented
- Z1 it removes the name of the bookcase of default from the rows.OBJ
- Fofileobj the name of rows OBJ to generate (rows output)
- Qifdiv it puts in action the corrections for the bug of the division of the Pentium (FDIV bug)
- MILILITER it creates rows eseguibile single-threaded
- basic it indicates the compiler C2 the fact that the compilation it happens for a plan basic
C2完成編譯後,VB會調用LINK.EXE將所有的OBJ文件連接成EXE文件,完成編譯過程。下面是一段命令行演示如何調用LINK.EXE:
LINK C:\Test\Form1.obj C:\Test\Molo1.obj C:\Test\Progetto1.obj C:\Programmi\Microsoft Visual Studio\VB98\VBAEXE6.lib /ENTRY:__ vbaS /OUT:C:\Test\Progetto1.exe /BASE:0x400000 /SUBSYSTEM:WINDOWS, 4.0 /VERSION:1.0 /DEBUG /DEBUGTYPE:CV /INCREMENTAL:NOT /OPT:REF/MERGE:.rdata =.text /IGNORE:4078
對於我們來說這些參數沒有什麼意義,用默認的就行了。這段命令行中並沒有包括輸出函數,如果我們希望輸出函數,可以定義一個.def文件,按照格式加入要輸出的函數列表,然後在命令行後面加上 「/DEF: 文件名」(當然也可以直接加/ EXPORTS參數),再調用命令行編譯,用的denpendency工具查看你就會發現你要輸出的函數了。
Def文件格式的定義:
LIBRARY 程序名稱
DESCRIPTION "MyDLL - (C) Antonio Giuliana, 2004"
EXPORTS
函數名= ?函數名@函數所在模塊名@@AAGXXZ
…
例:
LIBRARY MyDLL
DESCRIPTION "MyDLL - (C) Antonio Giuliana, 2004"
EXPORTS
DllRegisterServer= ?DllRegisterServer@SymExp@@AAGXXZ
DllUnregisterServer= ?DllUnregisterServer@SymExp@@AAGXXZ
注意:函數名和模塊名是區分大小寫的
我先用Vb編一個截取C2、LINK命令的程序:
C2:
Private Sub Form_Load()
f = UCase$(Left$(Command$, 256))
Open "E:\C2.txt" For Output As #1
Print #1, f
Close
End
End Sub
LINK:
Private Sub Form_Load()
f = UCase$(Left$(Command$, 256))
Open "E:\C2.txt" For Output As #1
Print #1, f
Close
End
End Sub
生成EXE後把VB98下的c2與LINK剪切到別處,在用這兩個程序代替。運行VB6.exe,隨意打開一個工程,點文件菜單,生成EXE。
不久我編的兩個程序就送給我夢寐以求的文件:
E:\C2.txt
-IL "C:\DOCUME~1\ADMINI~1\LOCALS~1\TEMP\VB381884" -F "E:\PROGRAM FILES\MICROSOFT VISUAL STUDIO\VB98\新建文件夾 (2)\FORM1.FRM" -W 3 -GY -G5 -GS4096 -DOS -ZL -FO"E:\PROGRAM FILES\MICROSOFT VISUAL STUDIO\FORM1.OBJ" -QIFDIV -ML -BASIC
E:\LINK.txt
"E:\PROGRAM FILES\MICROSOFT VISUAL STUDIO\FORM1.OBJ" "E:\PROGRAM FILES\MICROSOFT VISUAL STUDIO\LINK.OBJ" "E:\PROGRAM FILES\MICROSOFT VISUAL STUDIO\VB98\VBAEXE6.LIB" /ENTRY:__VBAS /OUT:"E:\PROGRAM FILES\MICROSOFT VISUAL STUDIO\LINK.EXE" /BASE:0X400000 /SUBS
這兩個TXT就是VB送給c2以及LINK的命令。
詳細解讀如下:
C2.txt
-IL "C:\DOCUME~1\ADMINI~1\LOCALS~1\TEMP\VB381884" -F "E:\PROGRAM FILES\MICROSOFT VISUAL STUDIO\VB98\新建文件夾 (2)\FORM1.FRM"是c2准備處理的兩個文件。 -W 3 -GY -G5 -GS4096 -DOS -ZL是c2生成OBJ的格式,後邊則是OBJ文件的地址。
LINK.txt
"E:\PROGRAM FILES\MICROSOFT VISUAL STUDIO\FORM1.OBJ" "E:\PROGRAM FILES\MICROSOFT VISUAL STUDIO\LINK.OBJ"是源文件。"E:\PROGRAM FILES\MICROSOFT VISUAL STUDIO\VB98\VBAEXE6.LIB"是轉換庫。後面是EXE文件地址及格式
⑹ VB有解釋模式和編譯模式兩種運行程序模式,請問分別是什麼意思謝謝
解釋模式是運行一條語句,通過中間環境動態解釋編譯執行。速度慢,但是容易移植。因為只要更改中間環境就能是原代碼在其他平台執行。比如VB在調試代碼的時候,我們設置斷點等調試的時候通常是採取解釋模式運行。
編譯模式,顧名思義是在運行代碼之前,將代碼編譯成目標運行代碼(機器語言),這種方式的好處是運行效率提高,但是僅限定在目標平台使用。比如VB將原代碼通過編譯後生成的EXE文件,通過EXE文件運行。
⑺ VB中怎麼編譯生成可執行程序
VB6:界面左上角單擊「文件」,選擇「生成工程1.exe」,彈出窗口中,單擊「選項」,輸入版本信息,設置相關選項等,確定。