unresolved external symbol "class CCommand * m_pCmd&quo
在文档的菜单命令响应函数中需要使用视图类的CCommand* m_pCmd命令对象,因此在视图类头文件中将该对象设置为全局类对象,并在文档类中使用:
void CMyCADDoc:

nPick()
{
// TODO: Add your command handler code here
// 如果当前状态存在命令,那么
// 1. 取消该命令的操作
// 2. 删除该命令对象
// 3. 将命令指针设为空
if( m_pCmd ){
m_pCmd->Cancel();
delete m_pCmd ;
m_pCmd = NULL;
}
}
结果出现编译错误:
MyCADDoc.obj : error LNK2001: unresolved external symbol "class CCommand * m_pCmd" (
?m_pCmd@@3PAVCCommand@@A)
MyCADView.obj : error LNK2001: unresolved external symbol "class CCommand * m_pCmd" (
?m_pCmd@@3PAVCCommand@@A)
Debug/MyCAD.exe : fatal error LNK1120: 1 unresolved externals
Error executing link.exe.
经检查,错误出现在全局变量的处理上。在视图类头文件中声明的全局变量要在视图类的实现文件中进行初始化:
// MyCADView.h : interface of the CMyCADView class
......
//声明全局变量
extern class CCommand* m_pCmd;
......
// MyCADView.cpp : implementation of the CMyCADView class
......
//声明的extern变量必须先赋值
CCommand* m_pCmd=NULL;
......
但为什么要这样处理,有没有其它处理办法,请高手指点。