我为sql和oracle分别写了一个读写的接口dll,要在我的应用程序中调用。而两个dll的可导出函数的名字和参数都是一样的。在我的程序中根据一个变量可以确定是调用sql或者oracle的接口函数。我要实现隐式的调用,请问怎么处理这个问题呢?
如:
if (sql)
    Execute();
else
    Execute();
怎么样保证上面的函数是调用sql的接口,下面的是oracle的接口呢?

解决方案 »

  1.   

    问题是这两个dll接口不是我写的,我没有权利去修改的,我只能调用。要是显示调用可以避免这个问题的,可规定是隐式调用,请问还有没有别的办法阿?
      

  2.   

    loadlibrary用自己的函数指针名来替换。
      

  3.   

    看错了,规定隐式调用,你可以试着把他们包到两个命名空间里面去,具体做法参考<cstring><cstdio>之类的文件。
      

  4.   

    刚才还想到了一个办法。
    在一个包装头文件中。声明:
    void sqlExecute();
    void oraExecute();然后分为两个CPP文件来实现
    两个实现文件里面包含不同的头文件来处理。
      

  5.   

    如果你不觉的烦的话,自己在做一个dll里面用动态加载的方法来调用ora和sql的函数
    然后在你自己做的函数出口地方用变量表示到底调用哪个?
    然后在你的程序里面用静态加载的方法调用你自己的dll就可以了