使用VC6调用DLL出现的问题(使用LoadLibrary返回值为0)
2005-04-14 17:16
501 查看
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文件转换过来的呀!
今天在程序实现的时候,使用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文件转换过来的呀!
相关文章推荐
- 使用LoadLibrary()调用DLL,使用FreeLibrary()释放之后出现访问报错
- dll的输出函数使用__stdcall调用约定后,客户端用GetProcAddress出现的问题!
- QT使用记录关于调用DLL库文件出现的问题
- qt写DLL文件并调用和出现的问题分析
- 关于32位和64位部署出现C#调用动态库DLL不成功的问题
- struts2 使用动态调用时出现的问题
- 安装了VMWare之后,出现使用libcef.dll的浏览器卡顿变慢问题
- VC6.0编译DLL,使用VS2010调用问题及解决方法
- .net中调用VC6生成的dll问题之操作系统无法运行
- (原创)VB调用DLL(VC)使用结构体参数时的内存对齐及分配的问题.
- 关于使用vc++调用matlab生成的dll传递数组的问题
- VS开发环境下生成和调用dll出现的问题和解决方法-1
- 使用Auto Layout导致调用addSubView时出现的问题
- c++调用python函数时,使用PyArray_SimpleNewFromData(nd, dims, typenum, data)函数时出现内存错误的问题
- VC中使用Matlab Engine出现"无法找到libeng.dll"的问题
- C# 解决引用dll,出现dll不可以使用等问题
- 求助Hibernate问题(我使用Criteria 查询数据库表时,当客户端调用到第3次就出现问题 )
- Spring Boot使用Feign客户端调用远程服务时出现:timed-out and no fallback available,failed and no fallback available的问题解决
- 使用反射出现的问题 the type *** exists in both "###.dll" and "###.dll"
- VC中使用Matlab Engine出现"无法找到libeng.dll"的问题