找回密码
 加入
搜索
查看: 10982|回复: 21

[AU3基础] 自己用VC6写了一个DLL,非常简单,但是用DLLCALL发现调用没效果?(已解决)

 火.. [复制链接]
发表于 2010-11-10 14:50:34 | 显示全部楼层 |阅读模式
本帖最后由 yiruirui 于 2010-11-13 14:27 编辑

用VC6写了如下代码:

_declspec(dllexport)int add(int a,int b)
{
        return a+b;
}
_declspec(dllexport)int subtract(int a,int b)
{
        return a-b;
}
就上很简单的加,减操作,然后编译成了一个dll.dll文件.
接着用AU3去调用,
代码如下:
$a=DllCall("dll.dll","int","add","int",23,"int",45)
MsgBox(0,"dll",$a)
结果输出为0,非常的好奇,为什么我的DLL没发挥作用?请大虾门给小弟指点指点关键所在,3Q!
附近也放上来了.

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?加入

×

评分

参与人数 1金钱 +10 收起 理由
afan + 10 感谢主动将修改帖子分类为[已解决],请继续 ...

查看全部评分

发表于 2010-11-10 15:22:28 | 显示全部楼层
$a是个数组...
 楼主| 发表于 2010-11-10 15:56:59 | 显示全部楼层
回复 2# rolaka


    那我的这个DLL如何才能看到效果呢?
$dll = DllOpen("user32.dll")
$a=DllCall($dll,"int","add","int",23,"int",45)
MsgBox(0,"dll",@error)
结果显示3,说没有找函数的定义,但是我明确定义了的,在MFC中也测试过了的!
发表于 2010-11-10 16:13:22 | 显示全部楼层
$a=DllCall("dll.dll","int","add","int",23,"int",45)
MsgBox(0,"dll",$a[0])
你试试
 楼主| 发表于 2010-11-10 17:30:25 | 显示全部楼层
回复 4# gaojie6619063


     测试了,运行没任何反映,没输出任何东西!
 楼主| 发表于 2010-11-10 17:55:47 | 显示全部楼层
代码给出,编译好的dll也给出,麻烦高手给解决一下,求高手路过..................
发表于 2010-11-10 18:05:27 | 显示全部楼层
本帖最后由 rolaka 于 2010-11-10 18:12 编辑
默认情况下, AutoIt 使用 'stdcall' 调用方式. 要使用 'cdecl' 方式调用,请在返回值类型后面加上 ':cdecl' .
DllCall("SQLite.dll", "int:cdecl", "sqlite3_open", "str", $sDatabase_Filename , "long*", 0).
你的dll我查不到函数名
 楼主| 发表于 2010-11-10 20:19:10 | 显示全部楼层
回复 7# rolaka


    declspec(dllexport)int add(int a,int b)
{
        return a+b;
}
_declspec(dllexport)int subtract(int a,int b)
{
        return a-b;
}
add    subtract就是函数名。
发表于 2010-11-10 20:55:39 | 显示全部楼层
学习学习!
发表于 2010-11-10 22:46:54 | 显示全部楼层
http://www.onlinedown.net/soft/17471.htm
自己下了用
发表于 2010-11-12 00:50:04 | 显示全部楼层
Dll 中的函数导出方式不正确,用下面的方法声明。
int _stdcall add(int a,int b)
{
        return a+b;
}

int _stdcall subtract(int a,int b)
{
        return a-b;
}
并且在工程中添加一个 .def 文件,定义函数的导出名字,代码如下:
LIBRARY Dll 的名字

EXPORTS
add
subtract
详情可参考附件示例。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?加入

×

评分

参与人数 1金钱 +25 贡献 +2 收起 理由
afan + 25 + 2

查看全部评分

发表于 2010-11-12 01:03:14 | 显示全部楼层
使用Depends工具可查看导出函数名,以上11楼可正解。
发表于 2010-11-12 07:17:20 | 显示全部楼层
学习,学习。。。。。。。。。。。
发表于 2010-11-12 10:36:07 | 显示全部楼层
这个好东西啊
 楼主| 发表于 2010-11-12 13:33:00 | 显示全部楼层
回复 11# baikaifang


    非常感谢你的回答!能告诉一下理由吗?或者有什么依据,让我去学习以下好吗?
您需要登录后才可以回帖 登录 | 加入

本版积分规则

QQ|手机版|小黑屋|AUTOIT CN ( 鲁ICP备19019924号-1 )谷歌 百度

GMT+8, 2024-5-17 06:11 , Processed in 0.093843 second(s), 29 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表