【发布时间】:2011-01-17 21:37:01
【问题描述】:
这是我的文件夹结构:
/
|
-- program.cpp
-- utility.h
-- utility.cpp
|
-- module/
|
-- utility.h
-- utility.cpp
// Note that I have two files named utility.h and two named utility.cpp
在构建项目时,我收到一个链接错误(LNK2028:未解析的令牌等...),说明某些符号未定义。我已经确认所有符号都已定义,并且所有声明的函数都有相应的定义。
我感觉在编译我的项目时,两个文件夹中的utility.cpp 文件被编译到输出文件夹中的相同utility.obj 中。结果,一个会覆盖另一个。
- 这是预期的行为吗?
- 我该怎么做 构建一个 C++ 二进制文件,它有两个 具有相同名称的文件(尽管在 不同的文件夹)?
【问题讨论】:
-
你要找的是命名空间
-
@fuzzy:这与命名空间无关。 2 个 .obj 文件中只有一个被拉入链接步骤。
-
@fuzzy:假设要编译的第一个
utility.cpp定义了命名空间foo_ns下的所有内容,而要编译的第二个utilty.cpp编译命名空间bar_ns下的所有内容,编译器会覆盖utility.obj编译第二个utility.cpp... 时,链接器启动时,.obj 文件中只有bar_ns可用。
标签: c++ visual-studio-2008 visual-c++ linker-errors visual-c++-2008