- 积分
- 92
- 注册时间
- 2003-5-19
- 仿真币
-
- 最后登录
- 1970-1-1
|
发表于 2004-7-19 08:07:18
|
显示全部楼层
来自 天津
回复: 请教:dos下的16位库如何改成32位
16位与32位程序的互操作
最近由于项目的原因,需要在Win9x平台上做一些底层的工作。Win95/Win98虽然是32位的操作系统,但是为了兼容16位应用程序,其中仍然保留着相当数量的16位程序,一些系统调用,最终还是通过16位程序完成的。这样,在Win9x平台上,一些底层的应用就会涉及32位代码和16位代码之间的互相调用。
微软为16位与32位代码间的互操作提供了一个标准的解决方案,称作Flat Thunk(在微软的技术中,有很多地方都用到了thunk这个词,比如在ATL中也有一个thunk,用来实现窗口句柄和窗口类之间的映射。Thunk在金山词霸中的解释是“形(式)实(在)转换程序”,侯捷在某处将它译为“一小段程序”)。简单说来,Flat Thunk由一个thunk脚本、一个32位dll和一个16位dll组成,这两个dll中含有thunk compiler生成的32位和16位连接代码,避免了由程序员自己来处理32位和16位代码转换时复杂的堆栈管理、内存对齐等工作。KB中有两篇文章解说的很详细:
HOWTO: Call 16-bit Code from 32-bit Code Under Windows 95, Windows 98, and Windows Me
HOWTO: Call 32-bit Code from 16-bit Code Under Windows 95, Windows 98, or Windows Millennium Edition
其中要用到一些比较古老的工具,现在的Platform SDK中已经没有了,比如VC1.52、Thunk Compiler等。如果一直有订阅MSDN,到以前的MSDN中找找,可能能够找到。
Wednesday, April 07, 2004 11:12 AM
转自:http://blog.joycode.com/sam1111/posts/18489.aspx |
评分
-
1
查看全部评分
-
|