如题

解决方案 »

  1.   

    一般的16位的DLL无需在SYSTEM.INI中注册。VB5和VB4 32位版本无法调用16位DLL。有两个办法解决这个问题: 
        1、如果你的16位DLL是标准的,也就是可以在16位VB4中调用,那么你可以使用VB4的16位版本编写一个VB4的Automation服务器,由这个服务器调用DLL。然后在VB5中调用这个Automation服务器。 
        2、如果DLL是针对C++设计的,不能使用16位VB4调用,你需要借助thunk技术,这必须借助C++或Delphi实现。
    以下转 rainstormmaster(暴风雨 v2.0)3 楼rainstormmaster(暴风雨 v2.0)回复于 2005-10-24 23:09:42  你可以使用VB4的16位版本编写一个VB4的Automation服务器,由这个服务器调用DLL。然后在VB6中调用这个Automation服务器。     
      
    Top4 楼rainstormmaster(暴风雨 v2.0)回复于 2005-10-24 23:18:41  另外,可以考虑使用Flat   Thunk技术(微软为16位与32位代码间的互操作提供的一个标准的解决方案,简单说来,Flat   Thunk由一个thunk脚本、一个32位dll和一个16位dll组成,这两个dll中含有thunk   compiler生成的32位和16位连接代码,避免了由程序员自己来处理32位和16位代码转换时复杂的堆栈管理、内存对齐等工作。)   
      下面的这篇文章介绍的很详细:   
      http://support.microsoft.com/default.aspx?scid=kb;en-us;155763