我在用vc 制作a.dll 文件时,调用其他的b.dll文件,编译后在应用程序调用我的a.dll文件时,必须要我在vc中调用的b.dll一起发布,请问高手有办法可以不需要b.dll文件吗?

解决方案 »

  1.   

    #include "b.h"
    #import "b.lib"我猜的。
      

  2.   

    我不想让别人看到我用到什么dll,我调用dll时还有
    b.lib和b.h
      

  3.   

    微软的MFC 为什么可以动态和静态链接呢,静态不需要MFC的dll文件
      

  4.   

    你把b.lib, b.h加到a.dll的工程中去,静态编译,不用LoadLibrary方式使用b.dll,就可以了.不过你的a.dll的文件就大了。也就是把b.dll编译到你的a.dll中去了。
      

  5.   

    哦,注明一下,你的b.dll要可以静态连接。否则不行,感觉像说废话了! 失败!
      

  6.   

    dll文件有静态连接和动态连接两种(是在创建是指定的).因此如果b.dll是动态的dll,那么好像没有办法.
      

  7.   

    可以的,现在有一个程序你可以搜索一下,可以把exe和所有需要的dll一起打包,就连kernel32.dll gdi32.dll,user32.dll都可以不要。你到www.google.com搜索PEBunDle
      

  8.   

    静态可能是把dll都编译进去了~
      

  9.   

    把b.dll文件作为资源嵌入到a.dll中,调用a.dll的函数时,把b.dll解压缩到Windows的临时目录,不要放在当前目录,其一个临时文件名C(越怪越好).利用LoadLibary和GetProcAddress调用C的函数.如果你熟悉DLL的延迟加载,更好,也可以使用DLL的延迟加载功能,调用C的函数.
      相关文档可以参考Windows developer Journal杂志(WWW.WDJ.COM)好像是2002 Jun/July两期,有源码.
      读书人的事能算偷么?如果你需要源码,也可以留下EMail地址.
      

  10.   

    不可以的,你想如果可以的话是不是你的DLL也不用了,你的意思是你要调用vc中的DLL吧,那样的话,你选择RELEASE模式就好了。