bbbird

思考的时候,请不要停下你的脚步......

博客园 首页 新随笔 联系 订阅 管理

        最近由于一些业务接口问题,和对方公司一个很牛的Man一起搞业务移植,他DELPHI偶VC,最后商订由他搞底层协议封装成DLL,我来调用,他DLL文件中声明为STDCALL,调用的方法和掉VC自己的DLL,有些不同。
        步骤:
        1.用VC6的工具Depends打开DLL,看DLL其中的函数信息,原型,接入点等。
        2.声明一个指向DLL函数其中的函数指针。
        如: 
       typedef int(*tMsgBox)();                                              //声明MSGBOX的函数指针
     3.声明并取加载的动态链接库的句柄
     HINSTANCE hDLL;

     hDLL=LoadLibrary("d:\\linux\\aaa\\TestDll.dll");          
//加载动态链接库MyDll.dll文件;
         4.实例化函数指针
     tMsgBox pMsgBox;
     5.把已经实例化的函数指针指向DLL中的函数
     pMsgBox = GetProcAddress(hDLL,"MsgBox");           //GetProcAddress中的第二个参数可以是函数在DLL中的序号
     6.调用函数
     pMsgBox();
     7.从内存中卸载动态库
    
FreeLibrary(hDLL);
  
     到这里动态调用就完成了,DLL库里函数多的话按序号调用可能会出问题,还是应该用函数名来调用。
 

posted on 2005-08-25 10:17  LionHeartKU  阅读(761)  评论(0编辑  收藏  举报