永发信息网

api定义中的lib和alias是什么意思啊?

答案:3  悬赏:80  手机版
解决时间 2021-03-29 10:40
api定义中的lib和alias是什么意思啊?
最佳答案
Api函数声明的格式:

[Private|Public] Declare Function|Sub 函数名 Lib "库名" [Alias "别名"] (参数列表) [As 返回值类型]

红色的内容为系统保留字.[]为可选内容.

Private|Public表Api函数的作用域:私有或共有.

Function|Sub表Api函数的类型 Function为函数 Sub为过程(无返回值的函数需转成该类型)

Lib "库名" 表Api函数所在的库文件文件名及路径.

[Alias "别名"] 表Api函数的别名,当Api函数与某个关键字重名时,就可以使用这个参数。

(参数列表) 中 Byval 表值引用,ByRef表地址引用(*),缺省为ByRef.

[As 返回值类型] 表Api返回的类型

举例:某SDK中提供A.Dll文件(存在在D:\下).其中某个函数C原型如下:

int Add(int a,int b);

我们做如下声明:

Public Declare Function Add "D:\A.dll" (Byval a as Long,Byval b as Long) as Long

对于你经常用的SDK Api函数你可以做成Api 声明文件.格式可以参照上面WIN32API.TXT的格式进行编写.以后要用到它们时直接就可以用Api Viewer调用它们就可以了.对于Win32Api.Txt里的系统深层Api函数,你也可以自行加入以方便自已的使用.
全部回答
个人以为没必要知道,只需要知道api的名称就行了。
(高手别骂我!)
API函数都是被打包到一个个*.dll文件中的,这个容纳API函数的*.dll文件就是一个函数库,lib关键字就是指你准备调用的API函数名位于什么样的函数库(dll文件)中。如果你有Depends工具(这个工具装了VC++ 6.0就有),可以用这个工具打开这些*.dll文件,你会发现里面有很多很多的函数名称,这些函数都对应了一个API,但是*.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
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
概括一下19世纪末的英国的社会背景
有一个分数,分子加1,这个分数等于1/2;
There was a big argument among the childre
什么是投资连接型保险?
鞍钢机总技校和重机技校有什么区别
找出下列词语中的错别字并改正:老生长谈、银
混泥工0.8吨等于几方
雅思听力来不及看题目怎么办
SiO2是制造光导纤维的主要原料,下列关于SiO2
单选题________interestingbookstheyare!A.Wh
新大洲本田服务中心地址好找么,我有些事要过
电缆终端wls一10/3.3 240-500表示啥意思
怎么破解别人摄像头
高低杠有哪些规定动作
烟台曹家庄驾管所办理换证的电话是多少?
推荐资讯
辛夷鼻吸有没有副作用
右脚脚趾全没了,对以后生活,走路有影响吗
惠普笔记本440g4怎么样
A number of high buildings have arisen ___
途安L有6座车型吗?
知解打一成语有几种
再续意难忘插曲中有歌词心爱的你甘知影
知商金融怎样?
椒房金屋是给哪个的妃子的
请问=IF(ISERROR(SEARCH(R$1,$Q2))," ","v")
一个女人对一个男人说你已经住进了我的心里了
15千瓦电机需要多大的空气开关,多大的保险
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?