CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
山寨机中的战斗机! 程序优化工程师到底对IT界有没有贡献
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  C++ Builder >  Windows SDK/API

做好了一个DLL文件,发现在Win98中无法动态装入,而2K与XP中正常。

楼主sczyq(我又...........)2005-11-03 12:48:12 在 C++ Builder / Windows SDK/API 提问

同样的另一个文件却可使用,  
   
  在测试中查出错号,却是少了个库文件。  
   
  如何找出是那个库文件?  
   
   
  附:测试片断。(这个文件总是提示“文件调入失败!xxxx”)  
   
   
  //---------------------------------------------------------------------------  
  void   __fastcall   TForm1::Button1Click(TObject   *Sender)  
  {  
          if   (OpenDialog1->Execute())  
          {  
                  Memo1->Lines->Clear();  
                  Edit1->Text   =   OpenDialog1->FileName;  
                  HINSTANCE   LoadExDLL   =   LoadLibrary(OpenDialog1->FileName.c_str());  
                  void   (__stdcall   *InvokeInterface)(TStrings   *,  
                                  AnsiString   __stdcall   (__closure   *)(AnsiString,   AnsiString))   =   NULL;  
                  if   (LoadExDLL)  
                  {  
                          (FARPROC)   InvokeInterface   =   GetProcAddress(LoadExDLL,"InvokeInterface");  
                          if   (InvokeInterface)  
                          {  
                                  try  
                                  {  
                                          InvokeInterface(Memo1->Lines,   GetLangString);  
                                  }  
                                  catch   (...)  
                                  {  
                                          Memo1->Lines->Add("函数调用出错!");  
                                  }  
                          }  
                          else   Memo1->Lines->Add("接口未能读取!");  
                          FreeLibrary(LoadExDLL);  
                  }  
                  else  
                  {  
                          Memo1->Lines->Add("文件调入失败!"   +   IntToStr(GetLastError()));  
                  }  
          }  
  }  
  //---------------------------------------------------------------------------  
  AnsiString   __stdcall   TForm1::GetLangString(AnsiString   Ident,   AnsiString   Df_Str)  
  {  
          return   Df_Str;  
  }  
  //---------------------------------------------------------------------------  
  问题点数:200、回复次数:9Top

1 楼shadowstar(CodeFast for Delphi & C++Builder)回复于 2005-11-03 12:55:11 得分 50

可能是某个WINAPI在WIN98下不支持,可以用MS   VS   Tools:   Depends.Exe查看一下。Top

2 楼ccrun(老妖)(www.ccrun.com)回复于 2005-11-03 12:55:41 得分 80

你用String作了Dll导出函数的参数了?Top

3 楼constantine(飘遥的安吉儿)回复于 2005-11-03 13:32:24 得分 50

参数跟返回类型一般都不要用AnsiString,用了就要用ShareMem  
  你加个断点看看到底到哪行出问题的Top

4 楼sczyq(我又...........)回复于 2005-11-03 13:40:06 得分 0

其实还是得感谢ccrun(老妖)(www.ccrun.com)    
   
  我到你的网站上下载了一个   Spy4Win   程序,来检查调入的库文件,  
   
  还真是找到了是少了一个文件   dsnap60.bpl   将这个文件COPY到98的SYSTEM目录  
   
  一切OK!Top

5 楼constantine(飘遥的安吉儿)回复于 2005-11-03 14:08:56 得分 0

Spy4Win有这个功能?Top

6 楼sjchao(阳光流溢)回复于 2005-11-03 14:24:33 得分 10

星星渐欲迷人眼....Top

7 楼ccrun(老妖)(www.ccrun.com)回复于 2005-11-03 14:26:49 得分 0

Spy4Win有个小功能就是可看进程所调用的模块。呵呵。Top

8 楼sczyq(我又...........)回复于 2005-11-04 13:23:37 得分 0

是在可用时的库文件加载情况与不可用时的加载情况比较,建议Spy4Win能通过进行文本识别能更方便地找出缺少的文件(库)。Top

9 楼newbiebcb(你好)回复于 2005-11-04 13:53:27 得分 10

拿分啊Top

相关问题

  • 钩子DLL能不能动态装入?
  • 为什么有的用VC编的程序可以在没装VC的机上(没有装入DLL文件)使用,而且大小只有几百k。
  • 在DLL中用CBITMAP.LOADBITMAP()装入BMP资源失败,调试发现AfxGetResourceHandle()时,afxCurrentResourceHandle = NULL,为什么?请大虾
  • 如何在win2000系统中在2G-4G的内存中寻找user32.DLL等系统DLL的装入地址!!
  • delphi的listview控件很吃内存,装入60多k的数据居然就占了几十兆内存,如何解决?
  • DLL
  • DLL?
  • dll
  • DLL
  • *.dll

关键词

  • win98
  • 文件
  • invokeinterface
  • loadexdll
  • ansistring
  • memo
  • 调入
  • opendialog
  • 库
  • spy4win

得分解答快速导航

  • 帖主:sczyq
  • shadowstar
  • ccrun
  • constantine
  • sjchao
  • newbiebcb

相关链接

  • CSDN Blog
  • 技术文档
  • 代码下载
  • 第二书店
  • 读书频道

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
北京创新乐知广告有限公司 版权所有, 京 ICP 证 070598 号
世纪乐知(北京)网络技术有限公司 提供技术支持
Copyright © 2000-2008, CSDN.NET, All Rights Reserved
GongshangLogo