解决方案 »

  1.   

    等了半天,资源终于显示出来了。下载地址:
    http://download.csdn.net/detail/chen8013/6371635免资源分下载,有兴趣的请看看。
      

  2.   

    如果你新建的是 ActiveX DLL 工程,则不会受到影响。编译出来的仍然是 ActiveX DLL,跟没有使用本软件一样。
      

  3.   

    哈哈,那些杀毒软件真够搞怪。新建一个标准EXE工程,什么代码都不写,总会有3、5个杀软报毒。
    我的这个写了一大堆的代码,扫描结果是全部都没发现病毒。
      

  4.   

    什么呀?
    你是说我的这个程序,申请的数据内存有“没释放”的?我可以很负责任的说,在我写的代码中,这些问题肯定不存在。
    并且,我的这个程序在运行时,申请的内存区是非常小的。
    active 是基于接口的。会有引用计数。系统会根据这个计数来回收资源。
    如果是标准的dll没有了那几个函数。也就没有了这个计数会不会在存在内存泄漏?
      

  5.   

    什么呀?
    你是说我的这个程序,申请的数据内存有“没释放”的?我可以很负责任的说,在我写的代码中,这些问题肯定不存在。
    并且,我的这个程序在运行时,申请的内存区是非常小的。
    active 是基于接口的。会有引用计数。系统会根据这个计数来回收资源。
    如果是标准的dll没有了那几个函数。也就没有了这个计数会不会在存在内存泄漏?
    你说的这个,跟我的这个工具是两回事。
    你所提的问题,完全是代码编写者的水平、能力问题。
    ①即使你用ActiveX DLL,如果你的代码中有一些“完全属于自己管理”的内存申请,COM接口也无法给你做释放操作。
    ②那些“带导出函数的ActivX DLL”,你运行通过Declare来调用的API,也跟COM无关,也不会有什么的“引用计数”。我这个工具,只是在VB6.0中实现一种不需要“搭车”的DLL链接方法。
    至于你刚才提到的“内存泄漏”问题,跟你用Declare来使用系统API或其它第三方API一样。
    只决定于“API提供者”,与我的这个工具毫无关联。
      

  6.   

    文章一开始的基本概念就是错的。首先,ActiveX DLL本身就是标准的dll,DllRegisterServer等几个导出函数就是标准的导出函数。其次,VB使用Hack手法导出函数形成非标ActiveX DLL的兼容性和各种问题的根源不是因为多了这几个COM特色的导出函数,而是VB编写的程序需要使用VBVM虚拟机。而直接调用导出函数,虚拟机以不正确的方式被加载,这是导致兼容性的根本原因。所以,要想让VB支持标准dll,除非你能重写VB的编译器和运行时类库,而无论怎么Hack那个链接器都是不可能有效果的。
      

  7.   


    你连我说的内容都还没弄明白,就妄加评论吧!!!
    我并没有说过“ActiveX DLL不是标准DLL”!!!
    只是强调了,用我的这个工具做出来的DLL文件,不是ActiveX DLL文件!你说的那些“大道理”,相信大家都见得多了,我在开始就说了不想在这方面做什么评论。
    你别没搞清楚问题实质,就说什么“不可能”。“除非你能重写VB的编译器和运行时类库,而无论怎么Hack那个链接器都是不可能有效果的
    其一: 我的软件“说明”文件中清楚的写着,用这个方法在VB6.0中做出来的DLL,仍然需要VB6运行库的支持!
    其二: 我的这个工具,做DLL文件的“源码框架”是什么样的,既有模板文件,也有“自己搭建”的方法说明。
      很明白的说了我做出来的DLL不需要任何类模块来“搭顺风车”,当然就根本不存在那几个ActiveX DLL才会
      有的函数。 并且,也明白的说了,以前流传的方法,做出来的文件实质还是ActiveX DLL,所以才有那几
      个函数在那儿。
    其三: 我的“工具”就是这一个程序,没有对VB6的编译机制作任何改动,我有使用我的工具做出的样例DLL、
      还有应用示例在那儿!  请你用事实来证明,怎么个“不可能”法? 怎么“不兼容”了 ???
      最好还是少讲些空话,废话…………
      

  8.   


    你连我说的内容都还没弄明白,就妄加评论吧!!!
    我并没有说过“ActiveX DLL不是标准DLL”!!!
    只是强调了,用我的这个工具做出来的DLL文件,不是ActiveX DLL文件!你说的那些“大道理”,相信大家都见得多了,我在开始就说了不想在这方面做什么评论。
    你别没搞清楚问题实质,就说什么“不可能”。“除非你能重写VB的编译器和运行时类库,而无论怎么Hack那个链接器都是不可能有效果的
    其一: 我的软件“说明”文件中清楚的写着,用这个方法在VB6.0中做出来的DLL,仍然需要VB6运行库的支持!
    其二: 我的这个工具,做DLL文件的“源码框架”是什么样的,既有模板文件,也有“自己搭建”的方法说明。
      很明白的说了我做出来的DLL不需要任何类模块来“搭顺风车”,当然就根本不存在那几个ActiveX DLL才会
      有的函数。 并且,也明白的说了,以前流传的方法,做出来的文件实质还是ActiveX DLL,所以才有那几
      个函数在那儿。
    其三: 我的“工具”就是这一个程序,没有对VB6的编译机制作任何改动,我有使用我的工具做出的样例DLL、
      还有应用示例在那儿!  请你用事实来证明,怎么个“不可能”法? 怎么“不兼容”了 ???
      最好还是少讲些空话,废话…………
    好了好了。
      

  9.   

    没看到这么做的意义是什么,做DLL直接用VC就可以了,干麻这么麻烦?
      

  10.   

    要说“意义”有多大,一般的人能搞出有多大意义的事来?
    以前就是因为“传说”了用“VB6.0做标准DLL”的方法后,引起了不少争论的。
    当然我的看法也是:用那些方法做出的DLL,是ActiveX DLL,只是“比直接编译出来的多了导出函数”。
    不管他们的方法如何,工程的基本架构,还是 ActiveX DLL 工程。
    没有基本的类模块就无法编译,所以编译后还是 ActiveX DLL文件。
    但我的这个工具做DLL,就不用类来搭建,所以就不是ActiveX DLL 。
    (当然如果你的源代码中,使用了类对象封装代码,仍然可以有类模块在里面。但编译后也不是ActiveX DLL)要说“麻烦”,有这个工具后,做起来比用VC简单多了。
    特别是对我们这些只擅长用VB的来说,用这个比用VC方便多了…………
      

  11.   

    就像CCAV10里面播放的一个农民造飞机,飞机飞不起来,然后他开始研究啊,一会儿是让什么老婆孩子在后面推“飞机”,一会儿利用下坡增加“滑翔距离”,一会儿找了什么镇上跑运输的什么朋友,用农用车牵引,啰啰嗦嗦半天,确实不知道干嘛。最后他通过实践,证明了,他的“飞机”之所以不能飞,是马力不够。我想也是,找一个航空器设计专业的教授测量下质量、机翼、发动机功率、载荷之类的参数代入方程一算,2分钟搞定的事情还怎么拍电视呢。
      

  12.   

        不明白什么叫标准DLL?ActiveX DLL不是标准DLL?貌似微软都没提标准DLL的概念。