AUTOIT能创建建DLL不?
如题................ 二进制(16进制)创建文件? 回复 1# xunfengcn答案是肯定的 回复 3# xms77
求真相。能编译成DLL吗? 回复xunfengcn
答案是肯定的
xms77 发表于 2012-5-9 05:45 http://www.autoitx.com/images/common/back.gif
请给出你“肯定”的答案,让我也学习一下,百思也想不出如何让au3从代码生成DLL,求真相 回复 5# happytc
答案确实是肯定的。就是肯定不行,哈哈!
这个早就有人研究过了,脚本语言要生成dll,痴心妄想。 自己手动编译,手动创建PE头,手动构造导出表、导入表、重定位表。用DllStruct*的几个函数应该可以了,最后结合FileOpen、FileWrite两个函数将机器码写入文件中就好了。 围观等结论并学习 本帖最后由 xms77 于 2012-5-9 20:51 编辑
回复 8# pusofalse
就等着P版来帮我解围了,呵呵,谢谢!因为P版曾经说过“谁说AU3不能编写操作系统的?”,所以我才能这样肯定的回答{:face (303):} 回复 10# xms77
在学习PE文件结构时,曾经手动编译过一个EXE文件,功能就是一个Hello World小程序。调用了DllStruct*的几个函数,手动构建的文件头和导入表,代码十分冗余,没保存,具体的实现代码已经忘得差不多了。
编译成DLL也是同样原理,因为EXE和DLL两种文件的格式都是一样的,区别在于DLL一般情况下都有导出表和重定向表,而EXE一般情况下则没有这两种表,只是一般情况,不是绝对的,EXE也可以有导出表和重定向表。有了导出表,可以直接DllCall来调用EXE中的函数,再也不必创建新的进程并传递参数。有了重定向表,可以直接用DllCallAddress来调用EXE中的代码,同样不必多开进程。 原来EXE和DLL有这样的区别 回复 11# pusofalse
虽然不是很理解,但是还是学到了点东西,感谢P版! 自己手动编译,手动创建PE头,手动构造导出表、导入表、重定位表。用DllStruct*的几个函数应该可以了,最后 ...
pusofalse 发表于 2012-5-9 18:49 http://www.autoitx.com/images/common/back.gif
肯定不行吧,你说的这些,只是构建DLL的文件结构而已,而如何填冲这个DLL的内容呢?关键的关键的东西没有呀:我们知道,编译中最核心的一环就是如何把源代码文件(这里当然就是au3的代码了)翻译成等价的目标文件,也就是如何把abc.au3译成abc.obj? 实际一点,不能。 好高深,看不懂