Foxtable(狐表)用户栏目专家坐堂 → 义全局代码的API时Lib和Alias两个关键字分别是什么意思?


  共有6511人关注过本帖树形打印复制链接

主题:义全局代码的API时Lib和Alias两个关键字分别是什么意思?

帅哥哟,离线,有人找我吗?
Bin
  1楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:贵宾 帖子:35433 积分:178524 威望:0 精华:3 注册:2013/3/30 16:36:00
  发帖心情 Post By:2013/6/1 15:07:00 [显示全部帖子]

LIB是指你要使用的DLL文件名称,重名的时候需要使用的,AliAS 是说原本名称为 XXX
[此贴子已经被作者于2013-6-1 15:50:59编辑过]

 回到顶部
帅哥哟,离线,有人找我吗?
Bin
  2楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:贵宾 帖子:35433 积分:178524 威望:0 精华:3 注册:2013/3/30 16:36:00
  发帖心情 Post By:2013/6/1 15:49:00 [显示全部帖子]

*.dll文件中的函数名称可能和你前面Declare部分的名称不一致,那么alias关键字就是说明*.dll文件中的API函数名称叫什么名字的,如果*.dll文件中的函数名称与前面Declare部分的名称一致,alias就可以省略不写。

例如API函数CopyFile,包括MSDN对这个API函数的描述都是用的是CopyFile这个名称,这个函数被保存在kernel32.dll文件中,而且在kernel32.dll中这个API对应的名称叫"CopyFileA",kernel32.dll中是找不到"CopyFile"这个名称的函数的,所以在定义这个API的时候先声名固定部分:
Private Declare
然后注意CopyFile函数是有返回值的,所以接着写:
Function CopyFile
后面接着写API函数的库名称:
Lib "kernel32.dll" (因为库都是dll文件,也可以省略写成Lib "kernel32")
由于库文件中的API名称不是"CopyFile",所以下面写:
Alias "CopyFileA"
然后写这个API的参数部分,参数用括号包含起来:
(ByVal lpExistingFileName As String, ByVal lpNewFileName As String, ByVal bFailIfExists As Long)
函数最后是有返回值的,在括号后跟着写:
As Long
这里就完成了整个API函数的声明。

把以上内容连接起来写就是:
Private Declare Function CopyFile Lib "kernel32" Alias "CopyFileA" (ByVal lpExistingFileName As String, ByVal lpNewFileName As String, ByVal bFailIfExists As Long) As Long
[此贴子已经被作者于2013-6-1 15:50:12编辑过]

 回到顶部
帅哥哟,离线,有人找我吗?
Bin
  3楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:贵宾 帖子:35433 积分:178524 威望:0 精华:3 注册:2013/3/30 16:36:00
  发帖心情 Post By:2013/6/1 17:21:00 [显示全部帖子]

图片点击可在新窗口打开查看我的意思是通配  * 代表所有字符啦.意思是某个.DLL

 回到顶部
帅哥哟,离线,有人找我吗?
Bin
  4楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:贵宾 帖子:35433 积分:178524 威望:0 精华:3 注册:2013/3/30 16:36:00
  发帖心情 Post By:2013/6/1 17:35:00 [显示全部帖子]

你在命令窗口应该是调用  CopyFile才对的啊  你都已经改名了

 回到顶部
帅哥哟,离线,有人找我吗?
Bin
  5楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:贵宾 帖子:35433 积分:178524 威望:0 精华:3 注册:2013/3/30 16:36:00
  发帖心情 Post By:2013/6/1 17:38:00 [显示全部帖子]

而且,你不要用Private  要用public 

 回到顶部
帅哥哟,离线,有人找我吗?
Bin
  6楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:贵宾 帖子:35433 积分:178524 威望:0 精华:3 注册:2013/3/30 16:36:00
  发帖心情 Post By:2013/6/3 17:30:00 [显示全部帖子]

VS编译生成的,默认是托管的,  你直接点击引用就行. http://www.foxtable.com/help/topics/1936.htm

 回到顶部