r*********z 发帖数: 74 | 1 本人CS菜鸟, 需要把一个LEGACY的程序VISUAL STUDIO 6.0写的 移到VS2013, 但很多
库函数和MACRO都不支持了。 因此改起来麻烦。如果一个一个移源代码的话, 太多
LINK 和DEPEDNECY。 如果能直接编译成LIB 文件的话, 感觉会好多。 问题是VS6.0
只能在建立PROJECT的时候让你选LIB, 不像VS2013可以随时选EXE或LIB. VS6.0 在已
经是EXE环境下, 如何编译成LIB呢? 因为VS6.0 早于GOOGLE成立, 几乎收不到啥有
用信息, 特此问问从业很早的马工, 用过这老古董的如何解决.
包子答谢 |
l**o 发帖数: 131 | 2 link结果是exe 还是 lib, 一般取决于 linker, 打开你的Make file或者Project file
, 把 linker的参数加个 -lib 或者 /lib. |
r*********z 发帖数: 74 | 3 谢谢指点啊, 对比了 LIB 的dsp, 我改了要改文件的.dsp 文件, 在LINK32=link32
改成 LINK32=link32 -lib 或改成 LIB32=link.exe -lib, 编译后。 LIB和EXE同
样大小的文件, LOAD的时候报错CORRUPTED FILE。 好像没这么简单。我用VS2013编
译,
同一个程序 LIB要比EXE大了100倍, 好奇怪
VS6.0 MAKEFILE, 只能EXPORT输出; 没看到IMPORT选项。 已转账10个包子, 非常
谢谢指点
file
【在 l**o 的大作中提到】 : link结果是exe 还是 lib, 一般取决于 linker, 打开你的Make file或者Project file : , 把 linker的参数加个 -lib 或者 /lib.
|
l**o 发帖数: 131 | 4 LOAD的时候报错CORRUPTED FILE? lib是静态链接库啊,用的话为啥要LOAD? 难道不是
在编译时候带个参数么?
包子已收到,谢谢。你如果愿意,把源码发给我,我周末来看看。不过丑话说在前,我
不收费,但不会在这上面花超过2个小时的时间,不保证能解决问题。
link32
【在 r*********z 的大作中提到】 : 谢谢指点啊, 对比了 LIB 的dsp, 我改了要改文件的.dsp 文件, 在LINK32=link32 : 改成 LINK32=link32 -lib 或改成 LIB32=link.exe -lib, 编译后。 LIB和EXE同 : 样大小的文件, LOAD的时候报错CORRUPTED FILE。 好像没这么简单。我用VS2013编 : 译, : 同一个程序 LIB要比EXE大了100倍, 好奇怪 : VS6.0 MAKEFILE, 只能EXPORT输出; 没看到IMPORT选项。 已转账10个包子, 非常 : 谢谢指点 : : file
|
r*********z 发帖数: 74 | 5 大牛已经很客气了。那倒不用花费时间了, 高屋建瓴的指点一下就非常有帮助了。
我表达错了应该这样表达更准确 我把产生好的LIB用ADD PROJECT以后,然后啥都没干
, 然后编译, 报错是CORRUPTED FILE。 我用一直接就开始就是制定编译LIB的
PROJECT产生的LIBB用ADD PROJECT以后, 就没这问题。
不过我对照了LIB 和 EXE 的DSP文件(发现是文本文件), 好像区别就是大牛说的这个
LINK32=link.exe 一个是 LIB32=link.exe -lib.
等会我就用最简单建立一个EXE的情况下,不附上其他代码, 在这样改改, 看看同样
的错误否。如果没有错误, 按可能其他地方错了。 如果有, 估计还有什么地方需要
改。
还有一个问题, 编译出来的LIB文件大小会比EXE大很多吗?如果一样大, 是不是不对
?
VS6.0 太老了, 打交道起来就像DATE 一个老女人。
【在 l**o 的大作中提到】 : LOAD的时候报错CORRUPTED FILE? lib是静态链接库啊,用的话为啥要LOAD? 难道不是 : 在编译时候带个参数么? : 包子已收到,谢谢。你如果愿意,把源码发给我,我周末来看看。不过丑话说在前,我 : 不收费,但不会在这上面花超过2个小时的时间,不保证能解决问题。 : : link32
|
r*********z 发帖数: 74 | 6 试了, 直接产生。CPP和。H文件,没有任何其他我的文件, 然后改DSP, 还是同样
的错误, 似乎还有其他地方需要改, 那就毫无头绪了
这个
【在 r*********z 的大作中提到】 : 大牛已经很客气了。那倒不用花费时间了, 高屋建瓴的指点一下就非常有帮助了。 : 我表达错了应该这样表达更准确 我把产生好的LIB用ADD PROJECT以后,然后啥都没干 : , 然后编译, 报错是CORRUPTED FILE。 我用一直接就开始就是制定编译LIB的 : PROJECT产生的LIBB用ADD PROJECT以后, 就没这问题。 : 不过我对照了LIB 和 EXE 的DSP文件(发现是文本文件), 好像区别就是大牛说的这个 : LINK32=link.exe 一个是 LIB32=link.exe -lib. : 等会我就用最简单建立一个EXE的情况下,不附上其他代码, 在这样改改, 看看同样 : 的错误否。如果没有错误, 按可能其他地方错了。 如果有, 估计还有什么地方需要 : 改。 : 还有一个问题, 编译出来的LIB文件大小会比EXE大很多吗?如果一样大, 是不是不对
|
l**o 发帖数: 131 | 7 嗯,我要你的源码其实是想看看能不能让它在VS2013(或者更新的版本)下编译。
Anyway, 你既然使用DSP, 那么打开你的老DSP,把based on "Win32 (x86) ???"里面的
???改成 Static Library就好. 我刚找了个VS6试了一下,应该没有问题.
lib当然会小一些,不用链接exe需要的初始化代码。
老女人无所谓,俺抽屉里面钢丝球有一打,呵呵。
【在 r*********z 的大作中提到】 : 试了, 直接产生。CPP和。H文件,没有任何其他我的文件, 然后改DSP, 还是同样 : 的错误, 似乎还有其他地方需要改, 那就毫无头绪了 : : 这个
|
r*********z 发帖数: 74 | 8 哦, 这个我还没试过。 周一去试试看看, 按照你这样改这个地方看看。 具体就是文
本替换“Win32 (x86) ???” 成 “ Win32 (x86) ???.lib" 吗? 能具体指导一下 把
based on "Win32 (x86) ???"里面的: ???改成 Static Library就好 ? 能贴个范例吗
?
目前我就改了LINK32=lib.exe -lib
在VS2013编译不了, 好多FUNCTION 和 MACRO都缺了。
谢谢指点啊。
【在 l**o 的大作中提到】 : 嗯,我要你的源码其实是想看看能不能让它在VS2013(或者更新的版本)下编译。 : Anyway, 你既然使用DSP, 那么打开你的老DSP,把based on "Win32 (x86) ???"里面的 : ???改成 Static Library就好. 我刚找了个VS6试了一下,应该没有问题. : lib当然会小一些,不用链接exe需要的初始化代码。 : 老女人无所谓,俺抽屉里面钢丝球有一打,呵呵。
|
l**o 发帖数: 131 | 9 我的???是 Console Application, 你的也许不同,如果你是什么Win32 Application的
话。但应该大致是这个路子,替换是直接替换成Static Library (你开个Static Lib
Project再打开DSP就知道了)
我就是按你的说法先创个Console project, 然后替换成Static Library, 注释掉main,
加个void Show() {printf("Show some steel balls!n");} 编译结果是比exe小不少的
lib.
我然后再创个Console,静态链接上个生成的Lib, 加个 extern void Show(); 再从
main里call Show(), 钢丝球就出来了。
【在 r*********z 的大作中提到】 : 哦, 这个我还没试过。 周一去试试看看, 按照你这样改这个地方看看。 具体就是文 : 本替换“Win32 (x86) ???” 成 “ Win32 (x86) ???.lib" 吗? 能具体指导一下 把 : based on "Win32 (x86) ???"里面的: ???改成 Static Library就好 ? 能贴个范例吗 : ? : 目前我就改了LINK32=lib.exe -lib : 在VS2013编译不了, 好多FUNCTION 和 MACRO都缺了。 : 谢谢指点啊。
|
b***i 发帖数: 3043 | 10 哪个函数不支持了?
0
【在 r*********z 的大作中提到】 : 本人CS菜鸟, 需要把一个LEGACY的程序VISUAL STUDIO 6.0写的 移到VS2013, 但很多 : 库函数和MACRO都不支持了。 因此改起来麻烦。如果一个一个移源代码的话, 太多 : LINK 和DEPEDNECY。 如果能直接编译成LIB 文件的话, 感觉会好多。 问题是VS6.0 : 只能在建立PROJECT的时候让你选LIB, 不像VS2013可以随时选EXE或LIB. VS6.0 在已 : 经是EXE环境下, 如何编译成LIB呢? 因为VS6.0 早于GOOGLE成立, 几乎收不到啥有 : 用信息, 特此问问从业很早的马工, 用过这老古董的如何解决. : 包子答谢
|
r*********z 发帖数: 74 | 11 谢谢大牛, 按照你指点的, 我编译好了LIB。 等会我在调调这里面的CLASS。
有个疑问,MAKEFILE #开头的是COMMENT OUT吧, 但似乎在DSP里好像不是, 因为
Win32 X86 前面就是#, 俺以为和MAKEFILE一样是COMMENT OUT
最后我编译出来的LIB是2.9M, .EXE是1.8M
哈哈, 如果还碰到不熟悉这个老女人的秉性, 还望大牛赐教。
Lib
main,
【在 l**o 的大作中提到】 : 我的???是 Console Application, 你的也许不同,如果你是什么Win32 Application的 : 话。但应该大致是这个路子,替换是直接替换成Static Library (你开个Static Lib : Project再打开DSP就知道了) : 我就是按你的说法先创个Console project, 然后替换成Static Library, 注释掉main, : 加个void Show() {printf("Show some steel balls!n");} 编译结果是比exe小不少的 : lib. : 我然后再创个Console,静态链接上个生成的Lib, 加个 extern void Show(); 再从 : main里call Show(), 钢丝球就出来了。
|