易語言驅動編譯
① 易語言如何編譯運行
問題一:易語言代碼編輯好後,編譯是變成程序來運行嗎 菜單裡面選擇「編譯」》「編譯」或者是「獨立編譯」編譯:要輸出多個文件 其中的文件除有.exe的可執行文件外還有相關的一些支持庫 在吧軟體給別人運行的時候裡面的文件缺一不可 都要放到那個.EXE文件的仿穗友相同目錄裡面!獨立編譯:只輸出一個.EXE的可執行文件 就是相當於那些支持庫文件被融入到.exe文件中了 如果要給別人使用的時候就不那一個.exe文件發別人就可以了。
問題二:怎麼用易語言打開那些用易語言編譯好的exe後綴的易語言程序? 靠,我看錯題目了。。不能反編譯的!新人總是異想天開,要是可以直接打開,別人的軟體還賣上個幾千塊一個,你說要是可以直接改,別人還要買干什麼,直接改,所以說不可能的。可以用OD工具進行反匯編,LZ的等級還沒到,不可能實現,如果想學習,給你個傳送門 52pojie。
問題三:易語言編譯完成的文件怎麼才能用易語言打開 易語言只是一個編程語言,不能反編譯。您下載的軟體是已經編譯出來的了,如果想反編譯,就很難,我也不會。。。
問題四:怎麼打開用易語言編輯的軟體(已經編譯好的) 可以反編譯,簡單可以修改文本, 工具用C32ASM 可以看看反匯編教程
問題五:用易語言編譯程序用哪種編譯方式多好? 靜態編譯和普通編譯一樣
靜態編譯是封裝了所有易語言的api,而普通編譯把易語言api編程文件,再用易語言來調用而已
其實兩者都是一樣,個人推薦靜態族鏈編譯,這樣有效減少文件數量
至於你說的獨立編譯和靜態編譯是同一種意思
問題六:請問有了易語言源碼怎樣編譯成軟體exe? bak是易語言備份文件,把bak後綴改成e就可以用易語言打開,
打開易語言時他會提示載入模塊,根據操作載入ec模塊文件
生成win32程序,可以用易語言編譯(如圖下)
易語言下載:180.97.83.171:443/...461879
問題七:易語言 調試易程序一運行直接就完畢 這種情況很多人都遇到過,包括我..歸類以下幾種可能.
使用了ET助手裡面的一鍵快捷編譯
編譯器配置出問題了
有進程攔截了link 因為link屬於調試環境,可能是某進程防止被調試,hook了相關函數,導致link啟動的時候直接被攔了
第三種的可能性是佔90%以上.....某些游戲或者軟體運行後,會啟動某服務 或者驅動開機啟動來防止自身主程序被調試........
最主要的因素還是是因為LINK被攔截...個人認為...如果答錯了飄過即可......勿噴
問題八:易語言程序用易語言運行時沒問題,但是編譯出來後再運行程序出了點錯怎麼辦 10分 易語言已經調試輸出了錯誤信息
錯誤(10143): 靜態編譯暫不支持使用了NPK或OPK支持庫的程序。
所以不可以使用「靜態編譯」
只能使用「編譯」
問題九:易語言版本不支備槐持編譯程序及製作安裝軟體怎麼辦 因為你用的易語言是學習版的,要破解了才能編譯
破解補丁放到易語言根目錄下運行,以下是破解補丁的下載地址
pan./s/1sjob7rB
問題十:易語言里如何運行編輯框內容? 要代碼 運行 (編輯框1.內容, 真, )
② 易語言怎麼調用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
以便您對此更加了解。
③ 易語言怎麼獨立編譯
能夠獨立編譯的易語言程序都可以獨立編譯,不支持獨立編譯可能和程序本身有關系。
獨立編譯,指的是支持庫不會和程序一起編譯,如果別人要使用的程序必須有支持庫才行,所以發給別人必須連著支持庫也發給他。
靜態編譯,指的是支持庫和程序一起編譯,易語言此種編譯常用,但有些支持庫不支持靜態,只好用獨立。
④ 易語言編譯有三種,有什麼區別
E語言編譯反三種:普通編譯、靜態編譯、編譯成安裝軟體。普通編譯:有時候會出現提示是否將文件寫出到同一目錄下。靜態編譯:直接編譯成EXE可執行文件。編譯成安裝軟體:直接編譯成一個可安裝的軟體。
⑤ 請教易語言模塊如何編譯成程序
*.e文件是易語言的源代碼文件,該文件中保存了易語言所設計的程序的所有源代碼。無論是*.ec的模塊文件還是*.exe的可執行文件都是通過*.e文件編譯而來的.
如果編譯源代碼文件(也就是*.e的文件)後,生成的是*.ec的文件,那麼說明這份源代碼是一個易語言模塊的源代碼,它只能被編譯為*.ec的易語言模塊文件。
要生成exe的可執行文件,需要在新建易語言程序項目時選擇「Windows窗口程序」類型,該類型的項目可以編譯為exe文件。
另:如何建立「Windows窗口程序」項目?啟動易語言後在彈出的「新建...」窗口中選擇即可。