LINK 错误:LINK : fatal error LNK1104: cannot open file 'uafxwce.lib' 的解决办法
EVC 工程在迁移到 VS2008 时遇到以下错误:
1>LINK : fatal error LNK1104: cannot open file 'uafxwce.lib'
EVC 工程使用的是 CE5.0 的 SDK。
VS2008 工程使用的是 CE6.0 的SDK。
分析:
(1) 查看 VS2008 工程的属性(Properties),其中未发现对 uafxwce.lib 的调用
(2) 查找 VS2008 使用的 SDK 的安装目录,未发现文件:uafxwce.lib
(3) 查找 EVC4 使用的 SDK 的安装目录,发现存在文件:uafxwce.lib 
(4) 在 VS2008 的菜单:Tools/Options 的 Options 对话框中的 Projects and Solutions/VC Directories 页面
Platfrom 下拉框中选择 VS2008 使用的 SDK,Show directories for 下拉框中选择:Library files.
增加 CE5.0 下的一个包含 uafxwce.lib 的路径,例如:
D:\Program Files\Windows CE Tools\wce500\STANDARDSDK_500\Mfc\Lib\ARMV4I
编译时出现大量重定义的错误。例如:
1>uafxwce.lib(cmdtarg.obj) : error LNK2005: "public: __cdecl CCmdTarget::CCmdTarget(void)" (??0CCmdTarget@@QAA@XZ) already defined in uafxcw.lib(cmdtarg.obj) 1>uafxwce.lib(cmdtarg.obj) : error LNK2005: "public: virtual __cdecl CCmdTarget::~CCmdTarget(void)" (??1CCmdTarget@@UAA@XZ) already defined in uafxcw.lib(cmdtarg.obj) 1>uafxwce.lib(cmdtarg.obj) : error LNK2005: "int __cdecl _AfxDispatchCmdMsg(class CCmdTarget *,unsigned int,int,void (__cdecl CCmdTarget::*)(void),void *,unsigned int,struct AFX_CMDHANDLERINFO *)" (?_AfxDispatchCmdMsg@@YAHPAVCCmdTarget@@IHP81@AAXXZPAXIPAUAFX_CMDHANDLERINFO@@@Z) already defined in uafxcw.lib(cmdtarg.obj) ...
根据以上分析,猜测在 EVC4 使用的 SDK 中 uafxwce.lib 的功能,在 VS2008 使用的 SDK 中被其它 LIB 代替。
因此,如果在 VS2008 的程中包含 uafxwce.lib 文件,则会出现上述的重定义错误。
再分析 VS2008 的工程,发现其中调用了一个自定义的 LIB 是使用 EVC4 编译的。
将此 LIB 使用 VS2008 重新编译,放在 VS2008 中替换以前的 LIB 后此问题解决。
 
                    
                     
                    
                 
                    
                
 
                
            
         
         浙公网安备 33010602011771号
浙公网安备 33010602011771号