开发者社区> 问答> 正文

吐槽一下 vc ?报错

最近改点 c 写的东西,原始工程是 vc6 的, 自己的机器是 win7 , 已经安装了 vc2010。
坑来了。
安装 vc6, 看上去成功安装, 打开文件,死掉,  打开 workspace , ok, 再打开文件,死掉。这难道就是传说中的 vc6 与 win7 的兼容问题? 重新找了个号称 兼容 win7 的版本,安装, 完成, 打开文件 OK,  打开 workspace , 死掉,重试,一样的错误。  算了, 放弃。  用 vc2010 编译。
用 vc 2010 编译提示需要 hid.h , 好吧,还好机器上装了 windows 的 sdk , 找到这个  头文件,加到路径上,OK。
现在编译出需要的动态库了,运行的时候又有问题,找啊找,原来 vc 编译东西分 Debug 和 Release 版,默认是 Debug版, 用的部分 lib 没有提供 Debug 支持, 忍, 改为 Release 版,现在终于可以运行了。
过了一两天,又出问题了, 部分机器上安装的时候提示没有 mfc100.dll , 咨询 baidu google 两位大拿,原来这玩意是 vc 2010 的, 要想不用就得改编译参数,  我改 。更改   Code Generation 中 Runtime Library ,  /MT + Share MFC , 链接报错,  /MT + Static MFC  --- 链接报错,重复引用      /MD + Static MFC, 链接报错。   再咨询大神,得到回复, 工程中用到的 部分 lib 为 vc6 编译出来的,在 vc 2010 下使用可能用问题----- 难道这玩意还不向后兼容???。  放弃,重回 vc6。
打上微软自家的 FileTool 补丁, 倒是能弹出打开文件的对话框了,但打开 workspace 文件还是报错。
还好机器上有个 xp 的 vm,  在 vm 中装 vc6, 安装到是没问题了。 打开工程,  OK,编译,  满以为可以正常一点, 又错, 需要  IPHLPAPI.h  , 这又是什么东西,  baidu, google,  原来这玩意后续版本已经自带了, vc6 + xp 要用需要装 sdk, 但这个  sdk, 微软自家都已经不再提供了.................    
折腾了两天,现在又在新的折腾中。

展开
收起
爱吃鱼的程序员 2020-06-20 17:31:07 657 0
1 条回答
写回答
取消 提交回答
  • https://developer.aliyun.com/profile/5yerqm5bn5yqg?spm=a2c6h.12873639.0.0.6eae304abcjaIB

    VC6都已经是上个世纪98年的产品,明显是你接手的东西,做这个东西的人已经老了,跟不上时代发展嘛

    宏哥早就说过

    win32才是你应该依赖的东西,win32api才是真正的设计,真正的精髓

    什么狗屁MFC,都是垃圾

    这不是菜鸟么???你还不配吐槽

    你这明显的没经验啊,人家VC6的工程,既然你想用人家的,你就应该在XP+VC6的机器上调,你倒是好先在win7上折腾半天VC6,然后又跑到vm下去折腾,至于说什么微软不提供SDK了,自己网上找啊,这很早的东西自然官方就不提供,或许提供但是你没找到连接,比如php3的源码,php官方网站我找半天就没有,只有google了,也许什么地方应该还有人保留着,对别人遗留的老代码,你应该想象下当时的环境,也许还是win98+vc6搞的呢,

    VC6还是挺不错的,VC6运行库是所有主流WIN系统自带的VC运行库,所以用VC6编译出来的执行文件非常小(而且不需要带运行库), 

    最后一个支持VC6的SDK是 MicrosoftPlatformSDK-February2003ForVC6,微软官网下载地址  http://social.msdn.microsoft.com/Forums/windowsdesktop/en-US/e1147034-9b0b-4494-a5bc-6dfebb6b7eb1/download-and-install-microsoft-platform-sdk-febuary-2003-last-version-with-vc6-support?forum=windowssdk

    其实VC6,WINSDK只要设置几个环境变量就行了,不需要安装也可以使用,所以win7下编译肯定是没问题的,AAuto里就有一个VC6扩展库,VC6编译器+WINSDK精简后也就14.6MB,下面AAuto调用VC6编译DLL的示例,非常方便(win7下可以使用)

    importvc6;varvc=vc6("/",,io.open())//输入C++源码vc.cpp=/******#include<iostream>#include<windows.h>usingnamespacestd;extern"C"__declspec(dllexport)int__cdeclAdd(inta,intb){MessageBox(0,"我是DLL我被调用","我是C++DLL",MB_OK);returna+b;}******///编译生成DLLvc.exec('cl*.cpp','/W3'/*警告等级*/,'/MD'/*使用多线程动态运行库*/,'/O2/Ot/GL/EHsc'/*代码优化选项*/,'/D"WIN32"/D"_WINDOWS"/D"_MBCS"/D"_USRDLL"'/*定义常数和宏*/,'/I"./INCLUDE"'/*指定头文件目录*/,'kernel32.libuser32.lib'/*导入库*/,'/link/SUBSYSTEM:WINDOWS/MACHINE:X86'/*后面是链接参数*/,'/out:test.dll'/*输出文件名*/,'/dll'/*输出DLL*/,'/LIBPATH:".\LIB"/LIBPATH:".\LIB2"'/*指定库目录*/)vardll=raw.loadDll("test.dll")Add=dll.api("Add","int(inta,intb)","cdecl")io.print(Add(2,3))



    引用来自“figer1”的评论

    VC6还是挺不错的,VC6运行库是所有主流WIN系统自带的VC运行库,所以用VC6编译出来的执行文件非常小(而且不需要带运行库), 

    最后一个支持VC6的SDK是 MicrosoftPlatformSDK-February2003ForVC6,微软官网下载地址  http://social.msdn.microsoft.com/Forums/windowsdesktop/en-US/e1147034-9b0b-4494-a5bc-6dfebb6b7eb1/download-and-install-microsoft-platform-sdk-febuary-2003-last-version-with-vc6-support?forum=windowssdk

    其实VC6,WINSDK只要设置几个环境变量就行了,不需要安装也可以使用,所以win7下编译肯定是没问题的,AAuto里就有一个VC6扩展库,VC6编译器+WINSDK精简后也就14.6MB,下面AAuto调用VC6编译DLL的示例,非常方便(win7下可以使用)

    importvc6;varvc=vc6("/",,io.open())//输入C++源码vc.cpp=/******#include<iostream>#include<windows.h>usingnamespacestd;extern"C"__declspec(dllexport)int__cdeclAdd(inta,intb){MessageBox(0,"我是DLL我被调用","我是C++DLL",MB_OK);returna+b;}******///编译生成DLLvc.exec('cl*.cpp','/W3'/*警告等级*/,'/MD'/*使用多线程动态运行库*/,'/O2/Ot/GL/EHsc'/*代码优化选项*/,'/D"WIN32"/D"_WINDOWS"/D"_MBCS"/D"_USRDLL"'/*定义常数和宏*/,'/I"./INCLUDE"'/*指定头文件目录*/,'kernel32.libuser32.lib'/*导入库*/,'/link/SUBSYSTEM:WINDOWS/MACHINE:X86'/*后面是链接参数*/,'/out:test.dll'/*输出文件名*/,'/dll'/*输出DLL*/,'/LIBPATH:".\LIB"/LIBPATH:".\LIB2"'/*指定库目录*/)vardll=raw.loadDll("test.dll")Add=dll.api("Add","int(inta,intb)","cdecl")io.print(Add(2,3))



    引用来自“piyoma”的评论

    这不是菜鸟么???你还不配吐槽

    引用来自“擅长被美女推倒”的评论

    你这明显的没经验啊,人家VC6的工程,既然你想用人家的,你就应该在XP+VC6的机器上调,你倒是好先在win7上折腾半天VC6,然后又跑到vm下去折腾,至于说什么微软不提供SDK了,自己网上找啊,这很早的东西自然官方就不提供,或许提供但是你没找到连接,比如php3的源码,php官方网站我找半天就没有,只有google了,也许什么地方应该还有人保留着,对别人遗留的老代码,你应该想象下当时的环境,也许还是win98+vc6搞的呢,

    想想py2和py3吧……软件这东西,都是有生命支持周期的,过期的东西不被支持也是常识,不然现在的win7没办法运行dos程序是不是也被称为「自己的东西自己都不兼容」?用gcc吧,骚年

    如果不用ide,直接用nmake就行了。

    链接报错,重复引用: 这个是因为和lib的MT/MD参数冲突了,必须一致。

    2020-06-23 13:08:31
    赞同 展开评论 打赏
问答排行榜
最热
最新

相关电子书

更多
低代码开发师(初级)实战教程 立即下载
冬季实战营第三期:MySQL数据库进阶实战 立即下载
阿里巴巴DevOps 最佳实践手册 立即下载