[问题] DLL里面的overload function要怎么call

楼主: kipi91718 (正港台湾人)   2019-04-28 18:07:23
开发平台(Platform): (Ex: Win10, Linux, ...)
Windows 7
编译器(Ex: GCC, clang, VC++...)+目标环境(跟开发平台不同的话需列出)
C++ Builder BCB build dll, MinGW build dll function caller
问题(Question):
Hello各位版友好,
小弟最近在学习写dll,
关于使用extern "C"写出来的dll,搭配LoadLibrary+GetProcAddress这种基本的用法
我自认大概已经熟了,
但如果今天不写extern "C"并且需要能够使用overload function的话,要如何使用呢?
因为这种explicit link最重要的就是知道function name会如何被mangling,
如果没有了extern "C"又不确定mangling的规则/结果的话,GetProcAddress要怎么填呢?
照我的理解是可以用一个.def档去自己做这种aliasing,但def档的内容是BCB能够帮我
产生出来的吗? 不然又会回到相同的问题,就是我不知道要用什么名字去做aliasing。
但后来想了想要用overloading又要explicit link好像没意义?
另外implicit link的话,include dll的.h档的话MinGW又会报错说找不到这个header档,
还蛮奇怪的,我是放在同个资料夹下面,后来编译还加上-I.的选项却也找不到。
最后想请教dll的学习,有什么特别的网站、文件或者书可以参考的吗?
以我自己在网络上找的资料总是觉得刚开始不知道在做什么,看完之后又太过零散或者
重复了,还有工具的影响又太大了 (不少都是默认本来就用VC++在写的,不太考虑相容
性问题啊...)
想知道有没有整套可以学会的材料可以看,特别是针对这篇提问的overload
function或者是class的部分,谢谢!
作者: Killercat (杀人猫™)   2019-04-30 14:29:00
C++的symbol不像C那么可控 dumpbin看看就知道了跨编译器无法找到C++ symbol 所以通常会以用C为主找不到symbol的话 自然就无法load dll啦
作者: stupid0319 (征女友)   2019-04-28 22:34:00
object指标放ecx寄存器,call address,回传值读eax....
作者: eye5002003 (下一夜)   2019-04-29 13:44:00
你真正的目标是?因为这东西通常只是为了方便更新软件才用的,怎么会需要多载?
作者: firose (guest也是也是也是也是也)   2019-05-02 10:01:00
你如果要针对每个overloading设定不同名称,那为何还要overloading?

Links booklink

Contact Us: admin [ a t ] ucptt.com