首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

vc2008 类名相同,命名空间不同也冲突?解决思路

2012-02-29 
vc2008 类名相同,命名空间不同也冲突?原来有命名空间AA(对应设立文件夹AA),下有函数abc(文件为abc.h和abc.

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文件,导致链接出错

热点排行