baikaifang 发表于 2010-11-12 18:12:29

回复 15# yiruirui

在Dll中声明函数的导出方式时,如果不加修饰符 _stdcall ,则该函数在导出后,其调用方式为 cdecl (C/C++调用约定),然而AU3 DllCall 函数的默认调用方式就是 stdcall (标准调用约定) ,所以在声明DLL中函数的导出方式时要使用 _stdcall 修饰符。 后面之所以使用 .def 文件定义函数导出的名字,而不是直接在源文件中使用 _declspec(dllexport) 定义导出函数,那是因为 _declspec(dllexport) 定义的导出函数,在编译时,编译器会对函数的名字进行改编,也就是说你定义的函数名 int 和 subtract 在编译后,名字会被改变的,而使用 .def 文件时,编译器就会按 .def 文件中的名字对函数命名,不变改编函数原名成其它名字。

有兴趣的话,可以了解以下内容:
http://topic.csdn.net/u/20090713/20/3061ac7d-8761-4ac4-9df7-5c8aa94e565c.html

http://blog.vckbase.com/arong/archive/2004/06/09/409.html

yiruirui 发表于 2010-11-13 14:26:39

回复 16# baikaifang


    非常感谢你提供的资源!

haodd 发表于 2010-11-13 19:28:13

我用那个函数查看器 看某个dll没有看到导出函数

左手猫头鹰 发表于 2010-11-14 08:33:57

回复yiruirui

在Dll中声明函数的导出方式时,如果不加修饰符 _stdcall ,则该函数在导出后,其调用方 ...
baikaifang 发表于 2010-11-12 18:12 http://www.autoitx.com/images/common/back.gif

总结的很全面,个人觉得还是au3只支持了标准的Win32程序调用。网上有人说,_stdcall是Pascal程序的缺省调用方式,通常用于Win32 Api中

yzz198318 发表于 2010-11-17 12:47:27

学习下学习下

yesjustme1 发表于 2012-11-17 23:19:56

回复 11# baikaifang

真是大好人!

傻娃 发表于 2016-1-17 10:26:17

不错的东西。。。。。。。
页: 1 [2]
查看完整版本: 自己用VC6写了一个DLL,非常简单,但是用DLLCALL发现调用没效果?(已解决)