chenfresh
驱动牛犊
驱动牛犊
  • 注册日期2002-10-23
  • 最后登录2004-06-15
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
阅读:3788回复:8

使用动态库出现:Debug Assersion Failed(fseek.c),请教大侠

楼主#
更多 发布于:2003-07-24 17:22
这是32位的程序调用32位的动态库,编写一个简单的C函数调用是成功的,但是添加到下面函数中,就不行。
程序定义了UNICODE。
 typedef void (*IUT)(UBYTE *InCFile, UBYTE *InMFile, UBYTE *InYFile, UBYTE *InKFile,UBYTE *OutPrintFile, struct PrintParameter PrintPara);

BOOL APIENTRY xxx()
{
 UBYTE InCFile[50];//InCFile,InMFile,InYFile,InKFile是字符串,表示文件的名称;
 UBYTE InMFile[50];
 UBYTE InYFile[50];
 UBYTE InKFile[50];
 UBYTE OutPrintFile[50];
 struct PrintParameter PrintP;
 HINSTANCE ghDLL = NULL;      
 IUT IUT_Function;
.........
        ghDLL = LoadLibrary(WorkingINI);
        ErrorCode = GetLastError();
//ErrorCode = 6.
        if (ghDLL != NULL)
         {
   IUT_Function = (IUT)GetProcAddress(ghDLL, \"PCIMain\");
             ErrorCode = GetLastError();
   IUT_Function(InCFile, InMFile, InYFile, InKFile, OutPrintFile, PrintP);

//运行到上面这句时,出错:?
//Debug Assertion Failed!
//Program: d:\\Program Files\\microsoftice\\office\\winword.exe
//File: fseek.c
//Line:101
//EXpression: stream!= NULL
                      FreeLibrary(ghDLL);
                   }
}
用NOTEPAD,也出一样的原因,只是Program:换成....Notepad.exe
请问各位是什么原因,谢谢?
grant
驱动老牛
驱动老牛
  • 注册日期2001-05-14
  • 最后登录2007-04-13
  • 粉丝0
  • 关注0
  • 积分350分
  • 威望35点
  • 贡献值0点
  • 好评度35点
  • 原创分0分
  • 专家分0分
沙发#
发布于:2003-07-25 08:42
LoadLibrary的返回值是6?
6 The handle is invalid.  ERROR_INVALID_HANDLE
说明你LoadLibrary就没有正常返回。
查一下这一行好了。
ghDLL = LoadLibrary(WorkingINI);
你可以步进跟踪到这里,看ghDLl的值。
助人乃快乐之本 有人给分就更快乐了 :-)
grant
驱动老牛
驱动老牛
  • 注册日期2001-05-14
  • 最后登录2007-04-13
  • 粉丝0
  • 关注0
  • 积分350分
  • 威望35点
  • 贡献值0点
  • 好评度35点
  • 原创分0分
  • 专家分0分
板凳#
发布于:2003-07-25 08:47
还有,把IUT_Function定义成全局变量试一下。
助人乃快乐之本 有人给分就更快乐了 :-)
swf2003
驱动中牛
驱动中牛
  • 注册日期2003-02-13
  • 最后登录2011-10-28
  • 粉丝0
  • 关注0
  • 积分4分
  • 威望22点
  • 贡献值0点
  • 好评度20点
  • 原创分0分
  • 专家分0分
地板#
发布于:2003-07-25 08:51
LoadLibrary 失败你的ghDLL就不应该用!
你的认可是对我最大的鼓励!
chenfresh
驱动牛犊
驱动牛犊
  • 注册日期2002-10-23
  • 最后登录2004-06-15
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
地下室#
发布于:2003-07-25 11:09
首先谢谢关注
loadlibrary()以后,ghDll的值变了,为一固定的值。
将IUT_FUNCTION设为全局变量,结果是一样。
我编了一个小程序,errorcode也为6,但出了结果。
请问为什么?

[编辑 -  7/25/03 by  chenfresh]
arthurtu
驱动巨牛
驱动巨牛
  • 注册日期2001-11-08
  • 最后登录2020-12-19
  • 粉丝0
  • 关注0
  • 积分26分
  • 威望161点
  • 贡献值0点
  • 好评度35点
  • 原创分0分
  • 专家分0分
  • 社区居民
5楼#
发布于:2003-07-25 11:58
UNICODE是在哪定义的,在函数前面?
那WorkingINI是怎么定义?形如#define WorkingINI _T(\"xxx\")?
既然用UNICODE,string都用_T宏包括起来好些。
grant
驱动老牛
驱动老牛
  • 注册日期2001-05-14
  • 最后登录2007-04-13
  • 粉丝0
  • 关注0
  • 积分350分
  • 威望35点
  • 贡献值0点
  • 好评度35点
  • 原创分0分
  • 专家分0分
6楼#
发布于:2003-07-29 10:29
把你的整个程序打成zip贴上来我看一下。
助人乃快乐之本 有人给分就更快乐了 :-)
luowei74
驱动小牛
驱动小牛
  • 注册日期2003-07-21
  • 最后登录2007-04-16
  • 粉丝0
  • 关注0
  • 积分162分
  • 威望21点
  • 贡献值0点
  • 好评度20点
  • 原创分0分
  • 专家分0分
7楼#
发布于:2003-07-29 10:48
得看全部,这点东西看不出来
chenfresh
驱动牛犊
驱动牛犊
  • 注册日期2002-10-23
  • 最后登录2004-06-15
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
8楼#
发布于:2003-07-29 12:10
谢谢关注,文件已经上载了,请看一下。
附件名称/大小 下载次数 最后更新
2003-07-29_DDIHOOK.zip (4KB)  0
游客

返回顶部