A. 易語言怎麼調用c語言編譯器來運行程序代碼 ! 急!謝謝回答者!說詳細些
如果易語言編譯器容許您,那麼就是可以的,例如keilc51編譯器和常用調試arm裸機程序,是可以在c語言語句中加入匯編語言。
由於本人不了解易語言,無法確定其編譯器是否可以編譯c,但估計是不行。
那麼說回來,如果這樣,程序就沒法寫了。實際大家是怎麼做的呢。通常做法是將c語言程序編譯成dll文件,也就是我們所謂的庫文件。然後就可以實現調用了。這種文件我們經常會在常見的程序中看到,原因就是代碼保密性好,並且更新很方便,關鍵在於可以多種語言交互。
當然了,也可以吧所謂的易語言封裝成dll,被c調用,當然如果他有這項功能的話。
如果一個c語言已經編譯成可執行程序了,比如exe文件,那麼易語言端應與c語言端進行進程通信,方可實現數據交互。那麼進程通信就有多種方式,那麼就不贅述了。
說下DLL的封裝,如果是c語言我們需要加入dll.h
dll.h中放入以下語句
#ifndef_DLL_H_
#define_DLL_H_
#ifBUILDING_DLL
#defineDLLIMPORT__declspec(dllexport)
#else/*NotBUILDING_DLL*/
#defineDLLIMPORT__declspec(dllimport)
#endif/*NotBUILDING_DLL*/
DLLIMPORTvoidHelloWorld(void);
#include"func.h"
#endif/*_DLL_H_*/
程序中的,DLLIMPORTvoidHelloWorld(void);,#include"func.h"是例子,就是放你書寫的用c寫的函數聲明的地方。
而在你c語言原先放主函數的那個文件中應該寫入以下內容
/*Replace"dll.h"withthenameofyourheader*/
#include"dll.h"
#include<windows.h>
#include<stdio.h>
#include<stdlib.h>
BOOLAPIENTRYDllMain(HINSTANCEhInst/*Libraryinstancehandle.*/,
DWORDreason/*.*/,
LPVOIDreserved/*Notused.*/)
{
switch(reason)
{
caseDLL_PROCESS_ATTACH:
break;
caseDLL_PROCESS_DETACH:
break;
caseDLL_THREAD_ATTACH:
break;
caseDLL_THREAD_DETACH:
break;
}
/*ReturnsTRUEonsuccess,FALSEonfailure*/
returnTRUE;
}
我們看見有很多case,也有很多傳入參數,最初可以不用管它,也可以使用。如需詳細配置,應自行梳理再做決定。
另外一點,對於高級語言和c語言清理現場的問題,也就是被調用函數結束後由被調用函數清理棧,還是由下一個被執行函數清理上一個函數的棧,這點很重要。兩種不同的調用方式將導致你雖然可以調用dll,但可能數據出錯。這個問題可以說在VB與C的交互上面就可以體現了。__cdecl這個就是默認c語言的棧處理方式。__stdcall是VB的處理方式,那麼對於易語言,請您詳細查看後再做定論。
那麼具體在c語言中提現就是,我們需要在函數前面加上__stdcall以告知編譯器採用此類編譯方式,應用方法就如下面的聲明。
#ifndef_FUNC_H_
#define_FUNC_H_
#include"dll.h"
#include<winsock2.h>
#include"var.h"
DLLIMPORT__(int*PercentNum,int*FileID,int*PackageID);
DLLIMPORT__stdcallintGetInfoNum(intMode);
DLLIMPORT__stdcallvoidPutInfoNum(intInfoNum,intMode);
DLLIMPORT__stdcallvoidDemo0(void);
DLLIMPORT__stdcallvoidDemo1(void);
DLLIMPORT__(void);
DLLIMPORT__(void);
#endif/*_FUNC_H_*/
我聽說VB和易語言有相似之處那麼我給出VB調用C語言DLL時候的函數書寫例子,以便您參考。
PublicClassForm1
PrivateDeclareSubNetToWorkLib"Client.dll"(ByValIpAddrAsString,ByValPortAsInteger,ByValModeAsInteger)
"Client.dll"(ByValStrAsString,ByValModeAsInteger)AsInteger
"Client.dll"(ByValStrAsString,ByValModeAsInteger)AsInteger
"Client.dll"(ByValModeAsInteger)AsInteger
"Client.dll"(ByValInfoNumAsInteger,ByValModeAsInteger)
PrivateDeclareSubDemo0Lib"Client.dll"()
PrivateDeclareSubDemo1Lib"Client.dll"()
.........
...
..
...
PrivateSubToolStripButton1_Click(ByValsenderAsSystem.Object,ByValeAsSystem.EventArgs)HandlesToolStripButton1.Click
'從text搜索關鍵詞並讀取回鏈表數據
DimStrAsString
If(ToolStripTextBox1.Text="")Then
MsgBox("內容不能為空")
Else
Str=ToolStripTextBox1.Text
StrToStruct(Str,SEND_SEARCH_0200)
DimTh0AsThreading.Thread
Th0=NewThreading.Thread(AddressOfDownFileList)
Th0.Start()
EndIf
EndSub
....
..
上程序但中StrToStruct(Str, SEND_SEARCH_0200)就是一個典型的VB調用DLL函數的例子。
那麼如果給些相關的參考資料(C語言封裝DLL以及VB調用的問題)
http://www.aidianying123.net/article/?29.html
以便您對此更加了解。
B. 易語言做的程序編譯後是屬於什麼語言
編寫後的程序還是易語言,只是一些破解版的易語言自動為其加了外殼。但它確實是易語言的代碼。易語言也可以說是在C的基礎上強化,所以也可以說它編譯出來的軟體是C
C. 易語言怎麼查看命令在哪個支持庫支持庫
工具欄查看。
1、打開易語言編譯器,在工具欄中選擇「幫助」->「易語言幫助手冊」。
2、在帶敏幫助手冊窗口中,點擊左側的「函數/過程/對象」選項卡。
3、在搜索結果列表中找到要查找的命令,如「MsgBox函數」。
4、點擊該命令的鏈接,可以查看該命令的詳細說明和使用方法核滑,同時也改行臘可以看到該命令所在的支持庫名稱,如「用戶界面控制項庫」、「文件操作庫」等。
D. 易語言如何編譯
問題一:易語言怎麼編譯 最上面有個編譯
問題二:請問有了易語言源慎前碼怎樣編譯成軟體exe? bak是易語言備份文件,把bak後綴改成e就可以用易語言打開,
打開易語言時他會提示載入模塊,根據操作載入ec模塊文件
生成win32程序,可以用易語言編譯(如圖下)
易語言下載:180.97.83.171:443/...461879
問題三:易語言程序寫好了要怎麼編譯才最好 選擇靜態編譯最好。
如果是正常編譯,那麼其他沒有易語言支持庫的電腦就無法運行程序(除非支持庫在程序的運行目錄下)。
而靜態編譯就不會出現這種問題,它將支持庫一並寫入了程序內,使其兼容性增強。並且靜態編譯對殺軟的誤報率有所降低(除了360這樣的)。
但是靜態編譯的壞處在於每個支持庫文件都需要有對應的靜態編譯支持庫,並且連接器出錯就無法編譯(那時需要修復了)。
希望能幫到你,不懂的地方請追問!
問題四:易語言怎麼獨立編譯 能夠獨立編譯的易語言程序都可以獨立編譯,版本較高的易語言程序的獨立編譯被改成了靜態編譯。不支持獨立編譯可能和程序本身有關系。
問題五:為什麼易語言不能編譯 1 .找到打開易語言安裝目錄下的 tools\link.ini 的配置文本,找到linker=C:\full\path\link.exe 這句,然後修改,如果你的易語言是安裝在E盤下核櫻面,而你如果使用的安裝易語言的文件夾名稱是默認名 e 的話,就修改linker=E:\e\vc98linker\bin\link.exe 。如果你把易語言安裝在F盤下面的123文件夾里,那你就把linker=C:\full\path\link.exe修改為,linker=F:\123\e\vc98linker\bin\link.exe ),反正你必須易語言安裝的填絕對路徑。
還有不知你有沒有下載易語言靜態編譯所需要的VC6鏈接器,靜態編譯必須要VC6鏈接器,如果沒有可到下面的網址下載:下載後直接放到易語言根目錄里就可以了。
bbs.eyuyan/read.php?tid=202913
2. 你把易語言破解補丁解壓到你安裝的易語言文件夾里,然後打開patch.exe,它就會把原來不能編譯的e.exe替換為可以編譯的e.exe,就這么簡單。如果你的易語言破解補丁不能用,那可以把電子郵件寫上,我給你發過來。
如果還不明白可以和我在線交談。
請採納。
問題六:請教易語言模塊如何編譯成程序? *.e文件是易語言的源代碼文件,該文件中保存了易語言所設計的程序的所有源代碼。無論是*.ec的模塊文件還是*.exe的可執行文件都是通過*.e文件編譯而來的.
如果編譯源代碼文件(也就是*.e的文件)後,生成的是*.ec的文件,那麼說明這份源代碼是一個易語言模塊的源代碼,它只能被編譯為*.ec的易語言模塊文件。
要生成exe的可執行文件,需要在新建易語言程序項目時選擇「Windows窗口程序」類型,該類型的項目可以編譯為exe文件。
另:如何建立「Windows窗口程序」項目?啟動易語言後在彈出的「新建...」窗口中選擇即可。
問題七:易語言編譯成軟體的可執行文件怎麼生成啊???跪求 是怎麼編譯?
需要官方正版或破解版才可以,如果是學習版則只能調試
靜態改孝叢編譯……
[菜單]=>[編譯]=>[靜態編譯](shift+f7)
如果提示錯誤,需要在易語言vc98linker(默認是這樣的)目錄下運行link.e,或者直接改變tools目錄中的link.ini的linker配置項
如果只是給其他擁有易語言的朋友或者自己使用的,可以直接編譯
還有一種是黑月編譯,需要黑月編譯支持庫(這個時候就不能可視編輯窗口了)……
問題八:用易語言怎麼編譯生成安裝軟體啊 先把源碼保存,然後再生成安裝文件。
生成安裝文件時,就一步一步地按照它說的去填寫。(最好保存出一個模板出來)建議生成後加個殼,或者靜態編譯出來加殼後用其他的軟體去包裝。全手打望採納!
問題九:易語言怎麼製作編譯器 這需要學習一定的匯編語言或其它編程語言
--------------------------------------------
將對應命令翻譯為機器可直接運行的機器指令
如果覺得太難可以將易語言源碼翻譯為其它編程語言源碼由其編譯進行編譯
或參考網上開源的其它編程語言的編譯(如C#/C++),參考其編譯原理和對應指令
問題十:易語言5.3怎麼靜態編譯 版本跨度較大,應用程序理論上是需要重編譯的並進行運行測試的。\r\nOracle的資料庫要根據具體版本去查詢官方的認證情況,看看是否可以支持Aix 6.1,有可能需要升級Oracle資料庫版本或者安裝相應補丁