貌似可以在def文件里使用不同的名字。具体语法也不清楚没用过

解决方案 »

  1.   

    改成这样试试:
    float WINAPI Add(float x, float y) {return x+y;}
    如果还不行,你就定义成一个类,在类里加上这两个函数,这样或许可以.
      

  2.   

    或者你也可以这样,加上参数类型选择:
    int WINAPI Add(float x, float y,bool IsInt) 
    {
    if(IsInt)
    return ((int)x+(int)y);
    else
    return x+y;
    }
    实际上你的两个函数返回的都是int,因此,完全可以就定义成一个参数是float的
      

  3.   

    感谢楼上各位的帮助!项目实际情况是:
    Dll_1里有函数:int WINAPI Add(int x, int y) {return x+y;}
    Dll_2里有函数:int WINAPI Add(float x, float y) {return x+y;}为了整合这两个Dll,方便以后统一维护,我需要在新的Dll中同时支持两个原有的Add();
    (注:1、Dll_1和Dll_2同名;2、已有两种客户在调用Add()函数;3、让客户修改自己的代码不现实)我目前能想到的方法:
    第一步:以重载的方式实现Add()(C++支持重载,所以这一步很容易);
    第二步:输出(被卡在这里了!)(由于客户不可能修改各自的代码,我不能以Add_1()、Add_2()的方式提供)。再次恳求帮助!
      

  4.   

    这个好像没有更好的办法了,既然更新DLL了,就需要调用者也同步代码。而DLL又不支持导出重载
      

  5.   

    实在不行,我只能用条件编译的方式来间接实现;
    但这么一来,Dll的维护就麻烦了:每次更新,都得发布两个版本(面向两种用户)
      

  6.   

    在Dll中输出重载函数的根本原因:
    1、已经有很多客户在使用两种不同参数的Add()函数;
    2、让这些客户去修改自己的代码是不现实的。
    因此,Dll的名字和Add()函数的名字,都不可以改变(简单地说,就是Dll的开发接口必须兼容,不能被修改)。而导出类或另定义函数,等于要修改Dll的二次开发接口