iCAx开思工具箱

标题: 【求助】这个错误是什么意思啊? [打印本页]

作者: gasyu    时间: 2003-9-19 12:13
标题: 【求助】这个错误是什么意思啊?
我调用dll退出时出现的错误,为什么啊?帮帮忙啊!
作者: pinkwall    时间: 2003-9-19 14:22
程序贴出来看看
  
光看结果很难说
作者: gasyu    时间: 2003-9-19 16:07
HTestDll=LoadLibrary("F:/DllFtp/DllFtp.dll");
   if (HTestDll!=NULL)
   {
    uc1601("LoadLibrary成功!",1);
    
    DLLUPLOAD DllUpLoad;
    DllUpLoad=(DLLUPLOAD)GetProcAddress(HTestDll,"MainUpLoad");
if (DllUpLoad)
    {
      uc1601("GetProcAddress成功!",1);
      char * UpLoadFileName="f:\\temp.prt";
      uc1601(UpLoadFileName,1);
          
      int UpLoadResult;
      UpLoadResult=DllUpLoad(UpLoadFileName);//*********************************
          }
    FreeLibrary(HTestDll);
   }
   ///////////////////////////////////////////////
     UF_terminate ();
  
运行到UpLoadResult=DllUpLoad(UpLoadFileName);//*********************************时,出错,其中调用了F:/DllFtp/DllFtp.dll中的函数MainUpLoad,此函数参数字符串,返回值为整数!
请帮我看看,谢谢!
作者: zzz    时间: 2003-9-21 15:20
就是说一种语言调用了另一种语言引起的,如c调了fortran。
作者: gasyu    时间: 2003-9-21 20:01
哈哈,我用的VC调用的DELPHI的DLL,就是这个问题吧,有没有解决方案啊!(还用VC调用的DELPHI的DLL,因为我的VC还没入门)
作者: blackriver    时间: 2003-9-22 12:53
我估计,产生这个错误的可能原因有:
  
1、调用函数与被调用函数的参数不一致(即所占空间大小不同)。
  
2、调用习惯不同。可能一种用的是C语言调用规范,另一种是PASCAL规范,即标准规范。
作者: zzz    时间: 2003-9-22 14:50
有些关于混合编程的书,如果感到有必要的话,可以自己去查一下。
作者: stone_dong    时间: 2008-12-12 11:57
这个是dll导出函数的 规范不一致。
VC默认是_cdecl,DELPHI 是 _pascal

要么讲 函数调用方法都设一致,
要么在函数调用前用汇编代码调整ESP的值
作者: Mozart    时间: 2008-12-14 17:01
。。。。。。。




欢迎光临 iCAx开思工具箱 (https://t.icax.org/) Powered by Discuz! X3.3