VS2008环境下,MFC序列化时候产生error LNK2019的解决办法。
首先序列化有这个严格的操作步骤,具体的可以参考微软帮助。http://msdn.microsoft.com/zh-cn/library/cc468158(v=vs.71).aspx
我在按照这个过程做序列化的时候,产生了一下错误:
error LNK2019: 无法解析的外部符号 "public: __thiscall CLine::CLine(void)" (??0CLine@@QAE@XZ),该符号在函数 "public: static class CObject * __stdcall CLine::CreateObject(void)" (?CreateObject@CLine@@SGPAVCObject@@XZ) 中被引用
1>C:\Users\Phyking\Desktop\a\Draw\Debug\Draw.exe : fatal error LNK1120: 1 个无法解析的外部命令
先检查代码语法和引用的错误性,没发现大的问题。后来注意到第三步了“定义不带参数的构造函数”。大家都知道到序列化过程中需要不带参数的构造函数,我发现我的代码中有不带参数的申明,写代码的时候为了简单直接把不带参数的构造函数改写了!也就是不带参数的构造函数只有声明,却没有定义。如果既没有声明也没有定义的话,出现的是下面的错误:
error C2512: “CLine”: 没有合适的默认构造函数可用
所以错误比较隐蔽。在实现文件中加了不带参数的构造函数(空函数)之后,问题解决了。