关于函数重载的问题,想得到一点帮助

big_d 2003-04-11 09:08:43
我有个一个动态库(用C实现,不是C++),然后在BCB,VC下编译(当然是建立不同的工程),得到dll,分别给其他程序调用,都可行。现在由于程序的需要,需要在动态库中重载一个导出函数,我只是在其原函数上增加一个int参数,并写好实现,但在bcb&vc下连接就出错(错误提示我记不轻了,好像是什么靠近右边括号的参数什么地),然后我把重载函数名换了一个(不是重载,相当于定义一个新函数),编译正常,而且其他程序调用正常。
我想知道,谁写过这样程序,确定在BCB、VC下重载导出函数可行。如果这样,我就继续朝原因,不然我也不想花时间在这上面了。
...全文
81 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
big_d 2003-04-11
  • 打赏
  • 举报
回复
总算查到点东西,
“對比C語言的函數,C++增加了重載(overloaded)、內聯(inline)、const和virtual四種新機制”,昨天我问了几个人,告诉我C也支持重载,害得我~~~~
但问题还是要解决的,如何解决?
先谢谢大家了。
big_d 2003-04-11
  • 打赏
  • 举报
回复
extern "C":是在cpp为了兼容C而定义,我用BCB使用编译器是cpp编译器,由于这个关键词,把C的内容当C++来处理,也就应该有cpp的各种特性。
“重载函数实际上是在链接时改成了不同的名字”,缺省参数的函数是不是也是这样处理?
如要实现函数名一致,但参数不同的函数,可以采用何种方式实现。我现在暂时采用不同函数名来实现。
big_d 2003-04-11
  • 打赏
  • 举报
回复
程序原来就有extern "C",若去掉就是一大堆一大堆的错误。
TopCat 2003-04-11
  • 打赏
  • 举报
回复
在C++里,重载函数实际上是在链接时改成了不同的名字,在C里是不能重载的。
而一般DLL的导出函数都必须以C的接口形式(extern "C"),不然函数名会发生变化。
这么一来“链接改名”这一招就不灵了,当然也就出错了
big_d 2003-04-11
  • 打赏
  • 举报
回复
本来是打算先采用缺省函数,但是不行,然后改成重载函数,老问题
BCB是连接错误
VC时编译错误
VC错误信息:
error C2084:function XXXXXX already has a body
shornmao 2003-04-11
  • 打赏
  • 举报
回复
C实现?C好像不支持函数重载!
你试着加extern "C"看看能不能解决。
big_d 2003-04-11
  • 打赏
  • 举报
回复
另:采用缺省函数也是同样的错误。

69,382

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧