CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
可用分押宝游戏火热进行中... 专题改版:Java Web 专题
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  C++ Builder >  数据库及相关技术

未了结的DLL问题!

楼主lysh137856(黎宏宇)2004-12-02 17:51:22 在 C++ Builder / 数据库及相关技术 提问

有一ad.dll中有一接口库OneWayInterface,其当中有一函数:function   ModifyPsw(const   OldPassword:   WideString;   const   NewPassword:   WideString):integer;  
          在调用了接口connectopen   后调用。  
          参数:OldPassword       旧密码  
           NewPassword       新密码         
    返回:>0     帐户密码修改成功  
                      -1     帐户密码修改失败。  
   
  请问各位大侠如何调用,谢谢!急呀!  
  我在网上找了好多资料,都是那几篇,真没意思。  
  希望各位高手指点! 问题点数:0、回复次数:17Top

1 楼xpdavis(咕嘟-不想孤独)回复于 2004-12-02 20:30:44 得分 0

先声明函数:int   ModifyPsw(const   WideString   OldPassword,   const   WideString   NewPassword);  
  然后就可以调用ModifyPsw函数了  
   
  链接之前,先运行“tlib   ad.dll   ad.lib”命令,将生成“ad.lib”文件,然后将该文件加入工程中,就可以编译成功了。Top

2 楼lysh137856(黎宏宇)回复于 2004-12-02 21:25:55 得分 0

如果是动态调用,应怎么样呢?  
  Top

3 楼xpdavis(咕嘟-不想孤独)回复于 2004-12-02 21:33:03 得分 0

typedef   int   (*TModifyPsw)(const   WideString   OldPassword,   const   WideString   NewPassword);  
   
  HINSTANCE   hnd   =   LoadLibrary("ad.dll");  
   
  if(hnd   ==   NULL)return   -1;  
   
  TModifyPsw   *ModifyPsw   =   (TModifyPsw   *)GetProcAddress(hnd,   "ModifyPsw");  
   
  if(ModifyPsw   ==   NULL)return   -1;  
   
  然后就可以调用了  
   
  ModifyPsw(...);Top

4 楼pig_liang(朱)回复于 2004-12-02 21:51:40 得分 0

非常详细,谢谢Top

5 楼lysh137856(黎宏宇)回复于 2004-12-03 11:33:54 得分 0

不对呀!  
                      代码如下:  
  int   i;  
   
  HINSTANCE   ins=LoadLibrary("MwNetGate.dll");  
   
  if(ins==NULL)  
        {  
                      throw   "Can't   load   library!";  
        }                                                                
  else  
  {  
   
  TModifyPsw   *ModifyPsw   =   (TModifyPsw   *)GetProcAddress(hnd,   "ModifyPsw");  
   
  if(ModifyPsw==NULL)  
        {  
   
              Application->MessageBoxA("没有此函数存在!","失败","失败");  
        }  
  else  
        {  
            i=ModifyPsw("13178930258","123456");  
   
              if(i==0)  
                      Application->MessageBoxA("成功!","成功","恭喜");  
            else  
                      Application->MessageBoxA("   失败!","失败","失败");  
          }  
  }  
  且我在.H中已声明:typedef   int   (*TModifyPsw)(const   WideString   OldPassword,   const   WideString   NewPassword);  
   
  但运行起来提示出错:[C++   Error]   User_sendmsg.cpp(83):   E2034   Cannot   convert   'char   *'   to   'int'  
  请各位指点!谢谢!  
  Top

6 楼xpdavis(咕嘟-不想孤独)回复于 2004-12-03 14:49:45 得分 0

TModifyPsw   ModifyPsw   =   (TModifyPsw   *)GetProcAddress(hnd,   "ModifyPsw");  
  不好意思多了一个“*”Top

7 楼xpdavis(咕嘟-不想孤独)回复于 2004-12-03 14:51:35 得分 0

TModifyPsw   ModifyPsw   =   (TModifyPsw)GetProcAddress(hnd,   "ModifyPsw");Top

8 楼lysh137856(黎宏宇)回复于 2004-12-03 15:14:04 得分 0

先谢谢楼上的大侠的热心帮助.  
   
  还是一样的错误呀!希望多指点!急呀!Top

9 楼xpdavis(咕嘟-不想孤独)回复于 2004-12-03 15:48:41 得分 0

哇噻,你出的错误是Application->MessageBoxA调用错了,怎么在那里干着急?出错了总得看看错在哪个位置吧?!Top

10 楼lysh137856(黎宏宇)回复于 2004-12-03 15:51:03 得分 0

哦,是我搞错了,Application->MessageBoxA("没有此函数存在!","失败","失败");  
  应为:Application->MessageBoxA("没有此函数存在!","失败",MB_OK);  
              Application->MessageBoxA("成功!","成功",MB_OK);  
              Application->MessageBoxA("   失败!","失败",MB_OK);  
   
  但运行起来却一直执行Application->MessageBoxA("没有此函数存在!","失败",MB_OK);  
  但该函数在DLL中应该没问题的呀!请各位指点  
  Top

11 楼xpdavis(咕嘟-不想孤独)回复于 2004-12-03 15:53:54 得分 0

typedef   int   (*TModifyPsw)(const   WideString   OldPassword,   const   WideString   NewPassword);  
  int   i;  
   
  HINSTANCE   ins=LoadLibrary("MwNetGate.dll");  
   
  if(ins==NULL)  
        {  
                      throw   "Can't   load   library!";  
        }                                                                
  else  
  {  
   
  TModifyPsw   ModifyPsw   =   (TModifyPsw)GetProcAddress(ins,   "ModifyPsw");  
   
  if(ModifyPsw==NULL)  
        {  
   
              Application->MessageBoxA("没有此函数存在!","失败",MB_OK);  
        }  
  else  
        {  
            i=ModifyPsw("13178930258","123456");  
   
              if(i==0)  
                      Application->MessageBoxA("成功!","成功",MB_OK);  
            else  
                      Application->MessageBoxA("   失败!","失败",MB_OK);  
          }  
  }  
  Top

12 楼lysh137856(黎宏宇)回复于 2004-12-03 16:05:26 得分 0

运行起来却一直执行Application->MessageBoxA("没有此函数存在!","失败",MB_OK);  
  但该函数在DLL中应该没问题的呀!请指点  
  Top

13 楼xpdavis(咕嘟-不想孤独)回复于 2004-12-03 16:07:57 得分 0

可能名字是_ModifyPsw,用一个查看器看一下MwNetGate.dll文件,都有什么函数Top

14 楼lysh137856(黎宏宇)回复于 2004-12-03 16:12:47 得分 0

MwNetGate.dll中有一接口库OneWayInterface,其当中有一函数:function   ModifyPswTop

15 楼xpdavis(咕嘟-不想孤独)回复于 2004-12-03 16:29:23 得分 0

是类的方法吧?导出类是不能动态调用的,你还是用静态编译的办法吧Top

16 楼lysh137856(黎宏宇)回复于 2004-12-03 16:39:57 得分 0

MwNetGate.DLL   的说明:  
  One-way   interface   单向网关接口库                     
   含有1个接口:                                                                                                                  
            密码修改。                                                                                                    
      使用regsvr32.exe命令进行注册,progid:MwNetGate.OneWayInterface    
        密码修改  
          function   ModifyPsw(const   OldPassword:   WideString;   const   NewPassword:   WideString):integer;  
           
          参数:OldPassword       旧密码  
           NewPassword       新密码         
    返回:>0     帐户密码修改成功  
                      -1     帐户密码修改失败。  
   
   
  我用TDUMP查看该DLL时,显示如下:  
      EXPORT   ord:0003='DllCanUnloadNow'  
  EXPORT   ord:0004='DllGetClassObject'  
  EXPORT   ord:0002='DllRegisterServer'  
  EXPORT   ord:0001='DllUnregisterServer'  
   
  不好意思小弟   之前没用过DLL  
  还请耐心指点,谢谢!                                    
  Top

17 楼lysh137856(黎宏宇)回复于 2004-12-03 22:30:48 得分 0

急呀!Top

相关问题

  • 今天我中奖了,结果…………
  • 刚领了结婚证,散分!!
  • DLL
  • DLL?
  • dll
  • DLL
  • *.dll
  • dll?
  • (.dll)
  • dll is 》》》----------------------------------------->

关键词

  • 函数
  • 密码
  • 修改
  • 接口
  • application
  • modifypsw
  • tmodifypsw
  • messageboxa
  • widestring
  • 失败

得分解答快速导航

  • 帖主:lysh137856

相关链接

  • CSDN Blog
  • 技术文档
  • 代码下载
  • 第二书店
  • 读书频道

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
世纪乐知(北京)网络技术有限公司 版权所有, 京 ICP 证 020026 号
北京创新乐知广告有限公司 提供技术支持
Copyright © 2000-2007, CSDN.NET, All Rights Reserved
GongshangLogo