vc6中向vs2010迁移的几个问题
vc6版本支持的库编译:CJ60lib
1. 用vs2010打开CJ60库的源码的dsw,强制打开
(1)设置项目属性的语言
因为,如果代码字符的编码集不一样,则会出现函数冲定义,参数冲突等问题,这可以通过修改项目属性可以修改。
因为VS2010默认示宽字符,所以,编译要从VC6(默认窄字符),要修改项目属性为不使用宽字符。

2. 编译:项目,方式如下:

(1)“编译”,出现一下问题:
![]()
定位文件,做一下修改
(2)再次build only
2.1
warning C4819: 该文件包含不能在当前代码页(936)中表示的字符。请将该文件保存为 Unicode 格式以防止数据丢失
双击提示,打开文件,然后保存即可
2.2
error C2065: “p”: 未声明的标识符
error C2065: “i”: 未声明的标识符
是因为vs2010更遵守C++标准,临时变量已经修正,需要把for(),以及if()括号中的局部变量,调制for或者if之前定义即可。
2.3
error C4430: 缺少类型说明符 - 假定为 int。注意: C++ 不支持默认 int
添加 int 的类型
2.4
一大堆的重定义问题,如下:
error C2011: “tagSFBS_FLAGS”:“enum”类型重定义
这是因为, shlapi.h中的代码被重新定义了,ATL在定义前会判断一下是否已经定义,而CJLIB库则没有判定,所以,只需要针对CJlib库源文件中的shlwapi.h包含注释掉。,一共有两处:
D:\TOOL3RDPART\CJ60源码\著名界面库cj60lib的源程序\Include\ModulVer.h(12):#include <shlwapi.h>
D:\TOOL3RDPART\CJ60源码\著名界面库cj60lib的源程序\Include\ShellTree.h(11):#include <Shlwapi.h>只需要再引用出,将该文件注释掉
//#include <Shlwapi.h>
经过上述步骤的解决,则问题解决了一大部分:
2.5
1>d:\tool3rdpart\cj60源码\著名界面库cj60lib的源程序\cj60lib\cjcontrolbar.cpp(155): error C2440: “static_cast”: 无法从“UINT (__thiscall CCJControlBar::* )(CPoint)”转换为“LRESULT (__thiscall CWnd::* )(CPoint)”从基类型到派生类型的强制转换需要 dynamic_cast 或 static_cast
定位到ON_WM_NCHITTEST(),即消息响应 函数返回值类型不匹配,这是因为VS2010以及VC6构造是不一样的。应该把
vc6的INT改为VS2010支持的LRESULT,因为打开问题消息响应,可以看到返回的类型是:
定位问题的相应函数:
在CJlib源码中修改如下:
主要有两个文件:
cj60lib\cjsizedockbar.cpp(89
cj60lib\cjcontrolbar.cpp(155)
2.6
cjpagerctrl.cpp(75): error C2440: “static_cast”: 无法从“BOOL (__thiscall CCJPagerCtrl::* )(NMPGSCROLL *,LRESULT *)”转换为“BOOL (__thiscall CCmdTarget::* )(NMHDR *,LRESULT *)”
1> 在匹配目标类型的范围内没有具有该名称的函数可以看出,VC6支持的是参数类型:NMPGSCROLL,而VS2010支持的参数是NMHDR,所以可以在CJlib修改源文件如下,统一参数不一致的问题。
修改为VS2010支持的类型:
即要修改实现,又要修改声明。
解决以上问题,则可以输出生成的dll文件
如果以debug编译,则输出d(debug)版本的库
如果以release编译,则输出release版本。
注意,release,同样要修改项目属性语言为:不支持款字符。

end;
vc6中向vs2010迁移的几个问题的更多相关文章
- vc6中向vs2010迁移的几个问题(2)
1. 库文件的迁移 参考:http://www.cnblogs.com/icmzn/p/6724969.html 2. 其他项目中的可能遇到的问题: 2.1 无法打开包括文件:“fstream.h”: ...
- vc6.0 PK vs2010
从VC++6.0不足看VisualC++2010新特性 说起VC,有人想到维生素C(维C),有人想到风险投资(venture capital), 程序员们尤其是做底层开发的程序员或老程序员们第一感觉肯 ...
- 如何将Eclipse中的项目迁移到Android Studio 中
如何将Eclipse中的项目迁移到Android Studio 中 如果你之前有用Eclipse做过安卓开发,现在想要把Eclipse中的项目导入到Android Studio的环境中,那么首先要做的 ...
- 在Entity Framework 7中进行数据迁移
(此文章同时发表在本人微信公众号“dotNET每日精华文章”,欢迎右边二维码来关注.) 题记:虽然EF7重新设计了Entity Framework,不过也还是能够支持数据迁移的. Entity Fra ...
- 在VC6中使用ogre进行游戏开发
微软公司开发的visual c++6.0堪称史上最易用.最成熟的开发工具.vc6以其小巧.轻便赢得了程序员的喜爱,以至于在VS大行其道的时代,很多程序员仍然使用vc6作为开发工具,vc6的欢迎性可见一 ...
- VC6中创建Qt工程的创建
文章来源:http://blog.sina.com.cn/s/blog_64d015c10100sf1o.html 本文主要介绍怎么创建可以在VC6中编译的QT工程.本文所采用环境为VC++6.0+Q ...
- laravel中migration 数据迁移
简介 数据库迁移就像是数据库的版本控制,可以让你的团队轻松修改并共享应用程序的数据库结构.迁移通常与 Laravel 的数据库结构生成器配合使用,让你轻松地构建数据库结构.如果你曾经试过让同事手动在数 ...
- 20.1翻译系列:EF 6中自动数据迁移技术【EF 6 Code-First系列】
原文链接:https://www.entityframeworktutorial.net/code-first/automated-migration-in-code-first.aspx EF 6 ...
- 20.翻译系列:Code-First中的数据库迁移技术【EF 6 Code-First系列】
原文链接:https://www.entityframeworktutorial.net/code-first/migration-in-code-first.aspx EF 6 Code-First ...
随机推荐
- js 逻辑运算符
两个逻辑运算符的操作顺序在自己的脑海里一直理不清,用js做了个实验 <script type="text/javascript"> if(false && ...
- session是什么
初识session,跟大家一起学习下 session是什么 首先,我们需要知道session是什么.我们普遍将session称之为会话控制.说实在的,我现在也不清楚session到底算是什么.我个人认 ...
- Array Division 808D
D. Array Division time limit per test 2 seconds memory limit per test 256 megabytes input standard i ...
- Java的OOP三大特征之一——封装
面向对象三大特征之一 封装 继承 多态 封装性就是把类(对象)的属性和行为结合成一个独立的相同单位,并尽可能隐蔽类(对象)的内部细节,对外形成一个边界,只保留有限的对外接口使之与外部发生联系. ...
- 20岁的设计师vs30岁的设计师
20岁的设计师vs30岁的设计师 如果你还是20来岁,要恭喜你,你还年轻, 一切才刚刚开始 还有时间去探索无尽的可能 还有时间去找到无限的前途 如果30岁的你还不够强大, 请记得时刻给予自己信心, ...
- Java 中转换为String类型的四种方法
1. 使用 String 的构造方法,用于 byte[], char[], StringBuffer, StringBuilder 类型 2. 使用 String 的静态方法 valueOf() 推荐 ...
- (转)用webbrowser做的网站登陆程序,如何获取cookie并且保存在程序中 (IE8有效) ,用途嘛,你懂的。
今天帮朋友做了个工具,用webbrowser做的,用户使用用户名密码登陆网站后,需要在后台下载和分析一些页面. 分析页面使用的是htmlparser .net版 里面唯一需要解决的问题是,登陆后的co ...
- 比较完整的HIS系统解释(转载记录)
HIS系统即医院信息系统(全称为Hospital Information System).在国际学术界,它已被公认为是新兴的医学信息学的重要分支.HIS系统的有效运行,将提高医院各项工作的效率和质量, ...
- Python脚本语言第一行的写法
脚本语言的第一行,目的就是指出,你想要你的这个文件中的代码用什么可执行程序去运行它,就这么简单 #!/usr/bin/python是告诉操作系统执行这个脚本的时候,调用/usr/bin下的python ...
- (9)How to take a picture of a black hole
https://www.ted.com/talks/katie_bouman_what_does_a_black_hole_look_like/transcript 00:13In the movie ...











