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 ...
随机推荐
- Oracle_SQL(3) DML增删改
sql语言按功能分为:数据定义语言DDL.数据操纵语言DML.数据查询语言DQL.数据控制语言DCL 一.数据操纵语言DML1.insert 新增 语法:insert into <表名> ...
- (转)Android中Parcelable接口用法
1. Parcelable接口 Interface for classes whose instances can be written to and restored from a Parcel. ...
- LibreOJ #6002. 「网络流 24 题」最小路径覆盖
#6002. 「网络流 24 题」最小路径覆盖 内存限制:256 MiB时间限制:1000 ms标准输入输出 题目类型:传统评测方式:Special Judge 上传者: 匿名 提交提交记录统计讨论测 ...
- de4dot破解脱壳新版MaxtoCode源数组长度不足解决办法
之前在看雪混了4年.NET破解版主,现在转战这里,发现很多人还在玩的是工具类的破解,可以说这里的人都还是皮毛啊 最近很多人问使用de4dot脱壳MaxtoCode有问题,之前写过一个教程,那是工具篇的 ...
- 会调色了不起吗? SORRY,会调色真的了不起!
其实,现实的世界,大部分都是非常普通和常见的.所以调色师才有他们发挥的空间.如何把镜头中的世界变成梦幻一般. 把画面的颜色统一之后,逼格马上提升了很多! 发现表情不对,从其他照片把表情P回来,哈哈 这 ...
- linux学习第四天 (Linux就该这么学)2018年11月16日
今天主要讲了 管道符,重写向与环境变量 输入输出重写向 标准输出重写向 (标准,覆盖,错误) > 将标准输出重写向到一个文件中 >> 追加到文件 2>错误输出重定向 2> ...
- [Robot Framework] 通过Robot Remote Server调用White Library测试WPF开发的桌面产品
参考 : https://github.com/jatalahd/WhiteRobotLibrary 通过此源代码编译WhiteRobotLibrary.dll,然后把高亮标记的这5个dll全部拷贝到 ...
- java正则表达式(字符串)
参考:http://blog.csdn.net/kdnuggets/article/details/2526588 补充: ?号的使用: ^/branch/([a-z]+[/]?)$ 可以匹配 /b ...
- ajax 简介0
WEB项目总是发生些新的变化,过去每个人都会抱怨WEB项目功能不如CS程序丰富,相应速度不够快速.但现在由于Ajax的出现有了很大的改观,具有快速的高响应性的用户界面.在传统的Web 应用程序中,当用 ...
- Visual Studio Plus 开发
参考文档:Developing Visual Studio Extensions http://msdn.microsoft.com/en-us/library/dd885119(v=vs.120). ...











