zhanghuaa 发表于 2004-7-11 13:46:06

请教:dos下的16位库如何改成32位

   本人有一个dos下的16位fortran形成autocad dwg文件库如何改成windows下的32位库?

freepu 发表于 2004-7-11 22:55:30

回复: 请教:dos下的16位库如何改成32位

用WINDOWS下的编译器如CVF重新编译一下行么?

zhanghuaa 发表于 2004-7-14 22:58:20

回复: 请教:dos下的16位库如何改成32位

没有源码!怎么办?

SCIE 发表于 2004-7-16 09:38:07

回复: 请教:dos下的16位库如何改成32位

用lib.exe来试试看。在cvf或msvc的安装目录中,使用方法可以查看MSDN.

zhanghuaa 发表于 2004-7-18 19:14:56

回复: 请教:dos下的16位库如何改成32位

首先谢谢freepu scie.我用lib试过,只能列表、提取等等,无法该成32位?还有其他办法?
l

SCIE 发表于 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

SCIE 发表于 2004-7-19 08:13:45

回复: 请教:dos下的16位库如何改成32位

贴一些相关的帖子和链接给你,也许有用。

(1)http://www.programfan.com/showarticle.asp?id=773

(2)
Borland C++ Builder 3.0
    Win98
    1、我想用BCB3.0产生16位的DLL,是否可以?
    2、如果BCB3.0不能产生16位的DLL,我是否在我的16位程序中调用BCB产生的32位DLL?

回答:

    BCB 3.0不能生成16位DLL,只能生成32位DLL。如果要生成16位DLL请使用Borland C++ 3.x/4.x/5.x。
    尽量不要在16位程序中调用32位DLL,因为这要使用thunk技术,非常麻烦。你可以下载call32nt.zip,这个文件展示如何在16位程序中调用32位DLL。还可以下载VB版本
http://www.arcatapet.com/vb.html
和VFP版本
http://www.west-wind.com/wwfp2pd.htm
的Call32。

zhanghuaa 发表于 2004-7-23 18:48:52

回复: 请教:dos下的16位库如何改成32位

谢谢!!

zhanghuaa 发表于 2022-4-11 09:39:45

关键是如何把16位的库文件(.lib)改成32位?如何操作?
页: [1]
查看完整版本: 请教:dos下的16位库如何改成32位