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数据库版本或者安装相应补丁