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文件转换过来的呀!