CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
IBM Rational 系统开发最佳实践工具包 WebSphere MQ 最佳实践 TOP 15
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  VC/MFC >  进程/线程/DLL

如何用DLL封装一个DLL?(没有.lib,没有.h)

楼主wawaku(一堆裤衩!)2006-03-15 13:40:56 在 VC/MFC / 进程/线程/DLL 提问

我一直都用隐式调用DLL,可这回没了LIB,就晕了。如何显式的调用呢?函数怎样封装呢?  
  我看了关于显式调用的MSDN的例子  
  如下:  
  typedef   UINT   (CALLBACK*   LPFNDLLFUNC1)(DWORD,UINT);  
  ...  
   
  HINSTANCE   hDLL;                               //   Handle   to   DLL  
  LPFNDLLFUNC1   lpfnDllFunc1;         //   Function   pointer//这里是什么?函数的指针哪里来的呢?  
  DWORD   dwParam1;  
  UINT     uParam2,   uReturnVal;  
   
  hDLL   =   LoadLibrary("MyDLL");  
  if   (hDLL   !=   NULL)  
  {  
        lpfnDllFunc1   =   (LPFNDLLFUNC1)GetProcAddress(hDLL,  
                                                                                        "DLLFunc1");  
        if   (!lpfnDllFunc1)  
        {  
              //   handle   the   error  
              FreeLibrary(hDLL);  
              return   SOME_ERROR_CODE;  
        }  
        else  
        {  
              //   call   the   function  
              uReturnVal   =   lpfnDllFunc1(dwParam1,   uParam2);  
        }  
  }  
  如果我封装了这个DLL需要改动的函数,那其它不需改动函数能直接被我用户得到么 问题点数:100、回复次数:6Top

1 楼mythay(小黑)回复于 2006-03-15 14:04:19 得分 100

LPFNDLLFUNC1   是用typedef自定义的指针类型,函数具有UINT   (CALLBACK*   LPFNDLLFUNC1)(DWORD,UINT);这样的原型。  
  如果这个函数的原型不变,当然不需改动就可以被用户得到。  
  ---------  
  其实根据dll可以生成相应的lib文件。  
  1.使用dumpbin导出dll的def文件,推荐使用pexports,可以直接导出不需要修改的def文件.  
    
  2.使用vc自带的lib程序,调用LIB   /DEF:sample.def   /MACHINE:IX86即可生成lib文件。  
  .h文件虽然没有,但是你知道这个函数的原型,自己写一个就成。Top

2 楼he_sl(he_sl)回复于 2006-03-15 14:13:00 得分 0

markTop

3 楼wawaku(一堆裤衩!)回复于 2006-03-15 14:17:08 得分 0

dumpbin命令怎么用?我C:\windows\system32>下使用时命令不起作用呢,请教一下了。Top

4 楼wawaku(一堆裤衩!)回复于 2006-03-15 14:21:04 得分 0

另外,比如说我知道我的DLL里有  
  Eap_GetDataSize(String   dataStoreName,ref   ulong   dsSize)  
  这样一个函数,我怎么定义我的函数指针呢,怎样调用这个函数呢?Top

5 楼wawaku(一堆裤衩!)回复于 2006-03-15 14:34:54 得分 0

TO:小黑  
   
  dumpbin学会使用了,却没有生成DEF文件呀,能不能说详细点怎么导出LIB文件呢?你一定会得很多分呀,谢谢!Top

6 楼mythay(小黑)回复于 2006-03-15 17:47:27 得分 0

使用/exports参数便可以看到到处的函数名,序号等信息。然后自己根据以上信息写一个def文件。Top

相关问题

  • 已有.h和.lib文件,封装新的DLL问题
  • DLL 封装
  • 怎样将类封装成 DLL或是 LIB
  • 封装DLL问题
  • 在线:封装dll问题!
  • 如何封装DLL问题
  • 如何封装dll?如何调用dll?
  • dll,lib,.h有什么区别呢
  • vc调用dll(只有dll,无lib和h文件)
  • 能用dll封装窗体吗

关键词

  • 函数
  • 文件
  • 指针
  • 原型
  • dll
  • lpfndllfunc1
  • 封装
  • 调用
  • hdll
  • 导出

得分解答快速导航

  • 帖主:wawaku
  • mythay

相关链接

  • Visual C++类图书
  • Visual C++类源码下载

广告也精彩

反馈

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