如题

解决方案 »

  1.   

    http://simtel.saix.net/pub/simtelnet/win95/prog/ndde102.zip
    953K 32to16 Flat Thunk Sample 
    http://www.thedelphimagazine.com/samples/thunk/thunk95.htmhttp://ycjy.jsipt.edu.cn/jsjx/VC/NewUpdate/win32/win2000appcomp.asp.htm
    通用替换
    在应用替换的过程中有许多应用程序也会陷入功能障碍。Windows 9x 所采用的方式可以称之为“直接替换 (flat thunk)”:它允许 16 位应用程序调入 32 位应用程序,也允许 32 位应用程序直接调入一个 16 位组件,或 16 位应用程序。Windows 2000 不支持这一功能,尤其是不支持 32 位应用程序直接调入 16 位应用程序。Windows 2000 和 Windows NT 所采用的方式可以称之为“通用替换 (generic thunk)”:通用替换允许 16 位应用程序调入 32 位组件,也允许 16 位应用程序启动对 32 位组件的调用过程,然后由 32 位组件回调 16 位应用程序,而不支持由 32 位代码直接调用 16 位组件,这一过程无法生效。您只能由 16 位启动对 32 位的调用,反之不能。另外针对替换过程还需要记住一点:即 Windows 9x 和 Windows NT 之间的基础进程模型都是有区别的。由通用替换中您可以看出一些区别。最简单的办法是将 16 位组件移植到 32 位组件。您需要对这两个平台的替换问题有清醒的认识。
      

  2.   

    要调用一个16位Dll,没有32位版本的,是不是一定要在9x下?
    具体该怎么做,需使用哪些函数?
    谢谢
      

  3.   

    1.HMODULE m_hmodule = LoadLibrary("XXX.dll");
    2.call XXX.dll 的static function.
      

  4.   

    使用DLL2LIB将DLL转换位LIB进行调用,试试这个转换工具:
    ftp://ftp.simtel.net/pub/simtelnet/win95/prog/d2l14.zip