DYLIBSYMBOL
- 来源: https://www.freebasic.net/wiki/wikka.php?wakka=KeyPgDylibsymbol
- 最后更新: 2022-06-25
返回 DLL 中函数或变量的地址。
语法
vb
declare function Dylibsymbol ( byval libhandle as any ptr, byref symbol as string ) as any ptr
declare function Dylibsymbol ( byval libhandle as any ptr, byval symbol as short ) as any ptr用法
` result = Dylibsymbol ( libhandle, symbol )
`
参数
libhandle
由 Dylibload 返回的 DLL 的 any ptr 句柄。
symbol
包含库中要返回地址的函数或变量名的 string。仅在 Windows 上,也可以是包含函数/变量序号的 short 值。
返回值
指向库中函数或变量的 pointer。
若函数失败,返回值为 0。
描述
Dylibsymbol 返回指向 libhandle 所指 DLL 中名为 symbol 的变量或函数的指针。libhandle 通过 Dylibload 加载 DLL 获得。符号必须在 DLL 中通过 Export 导出。
若 libhandle 为 0,则在当前可执行文件或 DLL 中搜索符号。
若使用 Cdecl 函数,只需指定过程名。若动态链接到使用 STDCALL(Windows 默认)创建的函数,则函数必须经过修饰。修饰函数名的方式是:函数名 + '@' + 参数所占字节数。例如,若函数 FOO 接受 3 个整数参数,修饰后的名称为 'FOO@12'。注意:若未使用显式 alias,过程名将为大写。
若链接到 Visual C++™ 创建的 DLL,则不需要修饰。对于 GCC,则需要修饰。
注意:dylibsymbol 若失败,将自动尝试以 @0 到 @256(4 字节递增)的方式修饰过程名。
示例
参见共享库页面上的动态加载示例。
平台差异
- Linux 不支持序号,始终返回 0。
- DOS 不支持序号,始终返回 0。
- Windows 不支持将
Dylibsymbol用于变量(仅支持过程)。 - DOS:参见专属的共享库 - DOS页面
方言差异
- 在 -lang qb 方言中不可用,除非通过别名
__Dylibsymbol引用。
与 QB 的区别
- FreeBASIC 新增
另请参阅
DylibloadDylibfreeExport
返回 目录