jamer 发表于 2011-12-2 02:52:05

[已解决]创建DLL

本帖最后由 jamer 于 2011-12-5 23:04 编辑

一直在论坛看的都是各种加载DLL的方法及技巧
但是想问问,AUTOIT怎么生成一个DLL文件呢。
比如实现最简答的功能,两个数相加~
实现下面这个功能
// 文件: main.c
extern "C" int __declspec(dllexport)add(int x, int y);
int add(int x,int y)
{
    return x + y;
}

user3000 发表于 2011-12-2 03:09:59

AU3 做不到生成DLL. 它只能调用, 而且调用前, 你必须了解该DLL封装的函数...

lllangxx 发表于 2011-12-2 08:57:38

这就是脚本的弊端也是优点所在

jdhua 发表于 2011-12-2 09:55:00

AutoIt本身不行

可以下一个MinGW之类的C/C++语言编译工具,然后在AutoIt中调用,编译你的c语言文件

如果有能力,用AutoIt本身做一个编译器,理论上也是可能的,呵呵

netegg 发表于 2011-12-2 17:17:30

回复 1# jamer
会写二进制(16进制)的话可以,不会的话就算了

netegg 发表于 2011-12-2 17:18:12

回复 2# user3000
这又是谁告诉你的?

netegg 发表于 2011-12-2 17:38:07

本帖最后由 netegg 于 2011-12-2 17:49 编辑

#include <file.au3>
$file = fileopen(@ProgramFilesDir&'\7-Zip\7-Zip.dll', 16)
$txt = FileRead($file)
FileClose($file)
FileOpen('g:\7-Zip.dll', 24)
FileWrite('g:\7-zip.dll', $txt)
FileClose('g:\7-zip.dll')
既然可读可写,没理由创建不了
不过至于怎么写就要看个人了,蛋蛋是不会直接用文本写可执行文件输出

bdancerlc 发表于 2011-12-2 19:58:06

回复 7# netegg


    借贴问一下,有没有好的方法,在如果没有API说明的情况下,了解到某个DLL文件中的函数一遍调用?..

netegg 发表于 2011-12-2 20:22:18

回复 8# bdancerlc
只是说可写,但怎么写不知道,就好比你用notepad2可以打开dll文件,但是完全看不懂写的是什么一样,反正这些dll都要流入内存,从这点上和文本没区别,只是进入前使用了特别的解析方式罢了,换言之,也就是说用文本也能创建dll,关键是怎么建

bdancerlc 发表于 2011-12-2 20:57:16

回复 9# netegg


    我主要是想知道,给你一个DLL文件,在没有API说明的情况下,如何使用!

就是这个内部包含了哪些函数无从得知!..

netegg 发表于 2011-12-2 21:08:06

官网上有这个,到底包含些什么函数,用到些什么参数,参数类型是什么

kevinch 发表于 2011-12-2 21:22:42

回复 8# bdancerlc
有很多软件可以看,比如exescope,reshacker等资源查看软件都可以在导出一项看到内置函数的一些内容,我最喜欢的是“程序内置函数查看器”,可以详细看到

jamer 发表于 2011-12-2 21:54:28

本帖最后由 jamer 于 2011-12-2 22:41 编辑

回复 10# bdancerlc
AutoIt汉化版有自带的DLL查看器,可以查看.dll文件,但是貌似只能看函数名字,函数的返回值,参数个数、类型、顺序是看不到的。
我想,这个dll也是程序保护的一种手段,应该是不能轻易看到内部函数的一些详细信息。。。

netegg 发表于 2011-12-3 01:16:55

不是保护手段,dll也是个可执行文件,只不过是可重复使用(同时被多个文件调用)而已,

user3000 发表于 2011-12-3 04:11:39

回复 6# netegg


   惭愧, 以偏概全, 差点误导别人!
   非常感谢, 受教了!
页: [1] 2
查看完整版本: [已解决]创建DLL