error C2440: “static_cast”: 无法从“void (__thiscall CMainFrame::* )

发布时间:2020-07-14 18:48:52 作者:WZM3558862
来源:网络 阅读:2339

 

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

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

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(p_w_picpath.obj) : error LNK2026: 模块对于 SAFESEH 映像是不安全的。
1>GLAUX.LIB(tkp_w_picpath.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 键入“附加选项”框中,然后点击应用


推荐阅读:
  1. F5新型数据中心防火墙
  2. 央视-索福瑞首“吃螃蟹”:SDN让网络更安全、更灵活

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

vc ++ fram

上一篇:微信分享到朋友圈,怎么自定义分享的标题,图片,内容?

下一篇:redis演练(1) 搭建redis服务

相关阅读

您好,登录后才能下订单哦!

密码登录
登录注册
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》