社区
Delphi
帖子详情
Dll中的函数重载处理
ymxxm
2000-07-17 12:36:00
请高手指点:如何在Dll中重载函数(需要导出同名函数)
...全文
290
3
打赏
收藏
Dll中的函数重载处理
请高手指点:如何在Dll中重载函数(需要导出同名函数)
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
3 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
JGTM2000
2000-07-17
打赏
举报
回复
导出同名函数是不可能的。否则就不会有mangled name了(见过C++输出的函数名吧?)。
Michaelyfj提到的overload是可以对名称相同但参数表不同的函数进行重载,但是在输出的时候,虽然有相同的名称编译器并不会报错,但是在实际引入时无法确定调用的到底是哪一个,因此显然将导致无法预测的堆栈错误。
怎么办?在exports时候为函数的不同版本明确指定不同名称即可。如下:
library BeepLib;
uses
Windows, SysUtils;
procedure Beep(seed: PWideChar); overload; stdcall;
begin
Windows.Beep(StrToIntDef(seed),0),1000);
end;
procedure Beep(seed: PChar); overload; stdcall;
begin
Windows.Beep(StrToIntDef(seed,0),1000);
end;
exports
Beep(seed: PWideChar) name 'BeepW',
Beep(seed: PChar) name 'BeepA';
end.
在调用时引入的时候同样附上name属性即可:
project TestOverload;
procedure Beep(freq: PWideChar); stdcall;
external 'BeepLib.dll' name 'BeepW'; overload;
procedure Beep(freq: PChar); stdcall;
external 'BeepLib.dll' name 'BeepA'; overload;
begin
Beep(StrToOleStr('10000'));
Beep(PChar('5000'));
end.
相信有更好的办法解决你的实际需求。
gsoft
2000-07-17
打赏
举报
回复
关注
Michaelyfj
2000-07-17
打赏
举报
回复
用保留字overload可实现dll重载,要具体例子请与我联系
e-mail:yfj321@163.net
VC++动态链接库(
dll
)编程视频教学
动态链接库的开发编译属于VC++程序员技能。 本课程学习之后能够理解动态链接库原理,学会编译静态库、动态库,学会通过lib和头文件链接动态库,学会直接通过代码访问
dll
中
函数
C\C++
DLL
调用(
dll
函数
重载
未解决)
1、首先,建立一个项目,注意要勾选 动态链接库(
DLL
)。 fun.h, 定义需要给外部调用的
函数
#pragma once #include<string> #include<iostream> #define FUN_API _declspec(
dll
export) EXTERN_C FUN_API int fun1(int a, int &b, ...
【C++】
函数
重载
② (
重载
函数
调用分析 |
函数
重载
特点 |
函数
重载
与默认参数 )
一、
函数
重载
1、
重载
函数
调用分析 2、
函数
重载
特点 二、
函数
重载
与默认参数 1、
函数
重载
与默认参数出现的二义性分析 2、代码示例 - 定义上述两个
函数
3、代码示例 - 没有二义性的
函数
调用 4、代码示例 - 出现二义性编译失败
DLL
函数
重载
,以及一些前提知识的整理~
__stdcall, __cdecl, extern "C"等一些知识整理下~网上也有不少前辈的精彩文章整理一下放在最下面~
dll
会随附生成一个lib,里面存的是
函数
名什么的,那么可以从他身上下手所以就不必委曲求全的去extern "C"了。也就是用静态调用~本来想用什么宏定义来控制输入输出的~太笨了我~我kao~看别人博客上的转载,如果那样的话,你还只包含一次,那岂不是输出代码就用不了
c++
函数
重载
详解
先是简单理解下
函数
重载
的概念:同一域内的同名
函数
在
函数
参数类型,参数个数,参数顺序上具有不同,则互为
重载
。 ps:
函数
重载
不包括
函数
返回值类型哟. 然后就是揭开一些c++的迷雾: 常成员
函数
的
重载
: class Test{ //成员
函数
func void fun...
Delphi
5,388
社区成员
262,730
社区内容
发帖
与我相关
我的任务
Delphi
Delphi 开发及应用
复制链接
扫一扫
分享
社区描述
Delphi 开发及应用
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章