这问题是太容易了还是太难了,诺大的CSDN,人都哪里去了?
看看热门的贴子,不是讨论程序员赚钱多少的,就是用什么工具好的,
真正解决问题的太少了!感慨啊。

解决方案 »

  1.   

    如果是95/98可以使用如下的Thunk实现。具体做法:
    1。利用Thunk生成两个DLL:一个32位的,一个16位的,其中32位的函数通过Thunk下移到对应的16位函数中;
    2。在此新建的含有Thunk功能的16位DLL中加载你已有的16位DLL,并对其引出函数做包装——这些包装正是32位DLL中下移下来的函数。
    3。应用程序首先加载32位DLL,由于使用了Thunk机制,Windows会为你加载16位的DLL。这个16位的DLL又加载了你原来的DLL(这次windows不会帮你,你要自己写代码加载)。当应用程序调用32位DLL中的包装函数时,由Windows负责将其转化为对16位DLL的调用,你自己再在16位的DLL中调用原来的16位DLL中的函数,完成一次完整的“包装调用”。
    关于Thunk的细节,可在MSDN中搜索标题:HOWTO: Call 16-bit Code from 32-bit Code on Windows95,里面讲得很详细。