一个古老问题:rror C2065: “afxChNil”: 未声明的标识符

wenluderen 2014-05-05 09:59:51
最近学习MFC 从老师那的一套程序。
他是VC6开发,我用VS2010 编译,
结果一大堆错误。

最经典的

VC6中 for ( i = 0; i < 4; i++)

但是在VS2010 报错 是 i没有定义 ,修改为for (int i = 0; i < 4; i++) 就OK了。

修改到最后 发现有个错误
就是rror C2065: “afxChNil”: 未声明的标识符。
怎么也找不到方法解决。
看到坛子里面有个帖子说道这个问题 最后不了了之。


希望大家给个答案。

源代码地址:
http://pan.baidu.com/s/1mgFj4uc
...全文
402 17 打赏 收藏 转发到动态 举报
写回复
用AI写文章
17 条回复
切换为时间正序
请发表友善的回复…
发表回复
worldy 2014-05-06
  • 打赏
  • 举报
回复
引用 13 楼 wenluderen 的回复:
[quote=引用 8 楼 worldy 的回复:] [quote=引用 7 楼 u013619424 的回复:] 曾经有人说过 VC6之所有好用 是在于的他的不严谨。 到了VS2005 VS2008往后,以前编译不出来的错误 现在全部出来了。 苍天啊 VC6 害死小白菜。。。
VC6不严谨?怎么个不严谨了?请多指教[/quote] 再比如
error C2440: “static_cast”: 无法从“UINT (__thiscall CSizingControlBar::* )(CPoint)”转换为“LRESULT (__thiscall CWnd::* )(CPoint)”
1>          从基类型到派生类型的强制转换需要 dynamic_cast 或 static_cast
[/quote] 从基类指针转换为派生类指针,本来就需要强制转换,VC6不需要转吗?
wenluderen 2014-05-06
  • 打赏
  • 举报
回复
引用 8 楼 worldy 的回复:
[quote=引用 7 楼 u013619424 的回复:] 曾经有人说过 VC6之所有好用 是在于的他的不严谨。 到了VS2005 VS2008往后,以前编译不出来的错误 现在全部出来了。 苍天啊 VC6 害死小白菜。。。
VC6不严谨?怎么个不严谨了?请多指教[/quote] 再比如
error C2440: “static_cast”: 无法从“UINT (__thiscall CSizingControlBar::* )(CPoint)”转换为“LRESULT (__thiscall CWnd::* )(CPoint)”
1>          从基类型到派生类型的强制转换需要 dynamic_cast 或 static_cast
wenluderen 2014-05-06
  • 打赏
  • 举报
回复
引用 11 楼 cd_vv 的回复:
这是达内的VOD视频点播系统,你还是用VC6.0做吧,vs2010和vc6.0差别还是很大的,win7系统也能安装vc6.0的
你说的很对 我花了很多钱 去参加培训 。 但是他们给的程序 只能在VC6下运行,这也太说不过去了。 你也参加培训了吗?前辈。。
cd_vv 2014-05-06
  • 打赏
  • 举报
回复
这是达内的VOD视频点播系统,你还是用VC6.0做吧,vs2010和vc6.0差别还是很大的,win7系统也能安装vc6.0的
wenluderen 2014-05-06
  • 打赏
  • 举报
回复
将一大堆错误跳过之后 终于把半成品 显示出来了。

心都碎了


cffa 2014-05-06
  • 打赏
  • 举报
回复
引用 8 楼 worldy 的回复:
[quote=引用 7 楼 u013619424 的回复:] 曾经有人说过 VC6之所有好用 是在于的他的不严谨。 到了VS2005 VS2008往后,以前编译不出来的错误 现在全部出来了。 苍天啊 VC6 害死小白菜。。。
VC6不严谨?怎么个不严谨了?请多指教[/quote] 以前有些消息的函数 如果类型是UINT 在VC编译就可以通过。如果是在VS2010 就编译不过 。需要修改为LRESULT afx_msg LRESULT OnNcHitTest(CPoint point);
worldy 2014-05-06
  • 打赏
  • 举报
回复
引用 7 楼 u013619424 的回复:
曾经有人说过 VC6之所有好用 是在于的他的不严谨。 到了VS2005 VS2008往后,以前编译不出来的错误 现在全部出来了。 苍天啊 VC6 害死小白菜。。。
VC6不严谨?怎么个不严谨了?请多指教
cffa 2014-05-06
  • 打赏
  • 举报
回复
曾经有人说过 VC6之所有好用 是在于的他的不严谨。 到了VS2005 VS2008往后,以前编译不出来的错误 现在全部出来了。 苍天啊 VC6 害死小白菜。。。
wenluderen 2014-05-06
  • 打赏
  • 举报
回复
引用 2 楼 WUYUAN2011WOAINI 的回复:
把这个加上
extern AFX_DATA TCHAR afxChNil;

加在什么位置呢?是头文件里面 还是 &afxChNil 前面某个位置。


wenluderen 2014-05-06
  • 打赏
  • 举报
回复
引用 3 楼 zgl7903 的回复:
用_T("") 或 NULL替换之


你好 我用NULL 直接替代原来的 &afxChNil

if (!CMiniFrameWnd::CreateEx(dwExStyle,
NULL, NULL, dwStyle, rectDefault, pParent))//使用NULL 替换 &afxChNil --注意此处的NULL指示的是第二个
{
m_bInRecalcLayout = FALSE;
return FALSE;
}



的确编译可以通过 ,不过最终程序无法执行 我估计可能是其他问题导致的。

显示丢失
wenluderen 2014-05-06
  • 打赏
  • 举报
回复
引用 1 楼 oyljerry 的回复:
找到这一行代码afxChNil,修改


程序中一个地方提到了afxChNil,而且还是前面还加了取地址符号。
应该如何修改呢? 直接换成 ''\0' 这也不行啊

可否细说 谢谢

zgl7903 2014-05-06
  • 打赏
  • 举报
回复
用_T("") 或 NULL替换之
wenluderen 2014-05-06
  • 打赏
  • 举报
回复
引用 16 楼 schlafenhamster 的回复:
virtual BOOL Create(
LPCTSTR lpClassName,
LPCTSTR lpWindowName,// &afxChNil 应该用 “” 吧 , 不是 NULL
DWORD dwStyle,
const RECT& rect,
CWnd* pParentWnd = NULL,
UINT nID = 0
);


你好 我试过了 使用 "" 代替以前&afxChNil 的位置 在VS2010 里面也可以编译通过

schlafenhamster 2014-05-06
  • 打赏
  • 举报
回复
virtual BOOL Create( LPCTSTR lpClassName, LPCTSTR lpWindowName,// &afxChNil 应该用 “” 吧 , 不是 NULL DWORD dwStyle, const RECT& rect, CWnd* pParentWnd = NULL, UINT nID = 0 );
wenluderen 2014-05-06
  • 打赏
  • 举报
回复
引用 14 楼 worldy 的回复:
[quote=引用 13 楼 wenluderen 的回复:] [quote=引用 8 楼 worldy 的回复:] [quote=引用 7 楼 u013619424 的回复:] 曾经有人说过 VC6之所有好用 是在于的他的不严谨。 到了VS2005 VS2008往后,以前编译不出来的错误 现在全部出来了。 苍天啊 VC6 害死小白菜。。。
VC6不严谨?怎么个不严谨了?请多指教[/quote] 再比如
error C2440: “static_cast”: 无法从“UINT (__thiscall CSizingControlBar::* )(CPoint)”转换为“LRESULT (__thiscall CWnd::* )(CPoint)”
1>          从基类型到派生类型的强制转换需要 dynamic_cast 或 static_cast
[/quote] 从基类指针转换为派生类指针,本来就需要强制转换,VC6不需要转吗?[/quote] 代码我放到主贴正文的百度链接中了,你可以下载后在VC6中运行。 我们老师说可以直接编译使用的。
kuankuan_qiao 2014-05-05
  • 打赏
  • 举报
回复
把这个加上
extern AFX_DATA TCHAR afxChNil;
oyljerry 2014-05-05
  • 打赏
  • 举报
回复
找到这一行代码afxChNil,修改

16,472

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC相关问题讨论
社区管理员
  • 基础类社区
  • Web++
  • encoderlee
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……

试试用AI创作助手写篇文章吧