使用VC6调用DLL出现的问题(使用LoadLibrary返回值为0)

2005-04-14:
    今天在程序实现的时候,使用VC6向导建立一个简单的MFC工程,在InitInstance函数中加上如下代码:
   HINSTANCE HInst;

 HInst = LoadLibrary("IsupGW.dll");
 if (HInst ==0)
 {
  ::AfxMessageBox("Load vaSS7GWISUP.dll Failed!!!");
  ::TerminateProcess(GetCurrentProcess(),0);
  return false;
 }

 PInitGW InitGw;
 PExitGW ExitGw;

 InitGw = (PInitGW)GetProcAddress(HInst,"InitGW");
 InitGw(fSendData, NULL, NULL);
 ExitGw = (PExitGW)GetProcAddress(HInst,"ExitGW");

   上述的调用是没有问题的,但是LoadLibrary以后的返回值为0。并且保证DLL肯定存在。
   目前问题出现的原因不明!!

   补充1:但是我使用一个工具“Dll函数查看器V2.0”倒是可以看见有两个函数(InitGW和ExitGW ). 
   补充2:

  Loadlibrary返回错误代码的意义
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
    错误代码         意        义
--------------------------------------
     0        系统内存不够,可执行文件被破坏或调用非法
     2        文件没有被发现
     3        路径没有被发现
     5        企图动态链接一个任务或者有一个共享或网络保护错
     6        库需要为每个任务建立分离的数据段
     8        没有足够的内存启动应用程序
     10         Windows版本不正确
    11        可执行文件非法。或者不是Windows应用程序,或者在.EXE映
                     像中有错误
    12        应用程序为一个不同的操作系统设计(如OS/2程序)
       13        应用程序为MS DOS4.0设计
    14        可执行文件的类型不知道
    15        试图装载一个实模式应用程序(为早期Windows版本设计)
       16        试图装载包含可写的多个数据段的可执行文件的第二个实例
    19        试图装载一个压缩的可执行文件。文件必须被解压后才能被装裁
    20        动态链接库文件非法
    21        应用程序需要32位扩展
  ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━   
  根据错误代码看来,应该是DLL本省的问题了,但是DLL本省就是从EXE文件转换过来的呀!

posted on 2005-04-14 17:16  摇摇荡荡  阅读(4841)  评论(1编辑  收藏  举报

导航