文章类型: VC&C++
关键词: c++,C++,,VC++6.0,项目迁移,VS
内容摘要: 在VC++6.0向导中完成项目迁移到VS2012版的错误,从基类型到派生类型的强制转换需要 dynamic_cast 或 static_cast

在VC++6.0向导中完成项目迁移到VS2012版的错误

2016/8/2 9:33:38    来源:apple    阅读:

编译时遇到两个问题,首先是

error C2440: “static_cast”: 无法从“void (__thiscall CMainFrame::* )(BOOL,HTASK)”转换为“void (__thiscall CWnd::* )(BOOL,DWORD)”

1>          从基类型到派生类型的强制转换需要 dynamic_cast 或 static_cast

error C2664: “CWnd::OnActivateApp”: 不能将参数 2 从“HTASK”转换为“DWORD”;

一行行的改,第一个是在CMainFrame中没有对消息映射ON_WM_ACTIVATEAPP()处理,这是因为第二个错误引起的,因为现在VS2012中把函数中声明了的HASK的类型是DWORD,把CMainFrame::OnActivateApp(BOOL bActive, HASK hTask)中的它改成DWORD就可以了,声明中也要改回来,CMainFrame::OnActivateApp(BOOL bActive, DWORD hTask),这样消息映射才对应。

改完后还有一个经常出现的

1>AppLog.obj : warning LNK4075: 忽略“/EDITANDCONTINUE”(由于“/SAFESEH”规范)
1>GLAUX.LIB(image.obj) : error LNK2026: 模块对于 SAFESEH 映像是不安全的。
1>GLAUX.LIB(tkimage.obj) : error LNK2026: 模块对于 SAFESEH 映像是不安全的。
1>GLAUX.LIB(tkdib.obj) : error LNK2026: 模块对于 SAFESEH 映像是不安全的。
1>GLAUX.LIB(tk.obj) : error LNK2026: 模块对于 SAFESEH 映像是不安全的。
1>.\Debug\OpenGL.exe : fatal error LNK1281: 无法生成 SAFESEH 映像。

这是安全性问题,

解决方案,是绕过safeshe验证,方法是这样的

解决方法:

1.打开该项目的“属性页”对话框。

2.单击“链接器”文件夹。

3.单击“命令行”属性页。

4.将 /SAFESEH:NO 键入“附加选项”框中,然后点击应用。

↑ 上一篇文章:VC++6.0的字符与字串型 关键词:VC++,6.0,字符,字串型 发布日期:2016/7/27 16:26:53
↓ 下一篇文章:vc6工程以及与vs2010下的vc2010之间的对话框资源复制使用 关键词:对话框资源,vc6,vc2010,vs2010 发布日期:2016/8/2 12:59:45
相关文章:
VC++中出现[warning C4996]: 'sprintf': This function or variable may be unsafe 关键词:VS,VC++,VC,warning,C4996,sprintf,This,function,o.. 发布日期:2016-09-30 10:11
vs2010 vc++ malloc分配内存 关键词:vs2010,vc++,malloc分配内存 发布日期:2017-05-12 16:06
MFC应用程序框架入门 关键词:VC,VC++6.0,MFC,程序框架 发布日期:2016-10-10 11:49
相关目录:.NETVC&C++软件开发
我要评论
正在加载评论信息......