vc2008 类名相同,命名空间不同也冲突?
原来有命名空间AA(对应设立文件夹AA),下有函数abc(文件为abc.h和abc.cpp),编译正常。
aa/abc.h
==========================================================================
#ifndef _aa_abc
#define _aa_abc
extern void aa_abc();
#endif
==========================================================================
现在在文件系统中复制abc.h和abc.cpp到命名空间BB(对应设立文件夹BB)中,用“添加-现有项”的方式把新文件导入进来,修改:
bb/abc.h
==========================================================================
#ifndef _bb_abc
#define _bb_abc
extern void bb_abc();
#endif
==========================================================================
此时编译就出现错误:
error LNK2019: 无法解析的外部符号 "void __cdecl aa_abc()"
如果在项目中注销引用aa_abc()的代码行(也就是禁止编译该部分),则bb_abc()能通过编译。
反之,如果注销引用bb_abc()的代码行(也就是禁止编译该部分),则aa_abc()不能通过编译。即使把abc.h和abc.cpp从项目中“移除”并注销引用bb_abc()的代码行(也就是禁止编译该部分),编译仍报同样错误。
回顾出现问题的过程,觉得可能是把aa文件夹下的abc.h和abc.cpp复制到bb下面后,用vc2008把这两个文件导入项目时,vc2008的自动功能可能引起紊乱。
如何解决?
[解决办法]
之前好像遇到过,大概方法是关闭软件,重新添加,然后编译,或者清理一下生成的内容。
[解决办法]
添加include路径,以及Path路径,由于默认的项目路径不包含添加的代码路径,
link时找不到新添加项的obj文件,导致链接出错