这是我的文件夹结构:
/
|
-- 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: unresolved token等),表示某些符号未定义。我已确认所有符号都已定义,并且所有声明的函数都有相应的定义。
我有一种感觉,在编译我的项目时,来自两个文件夹的
utility.cpp
文件会被编译成输出文件夹中的同一个utility.obj
,结果其中一个会被覆盖。以下是需要回答的问题:
- 这是预期行为吗?
- 如何构建一个C++二进制文件,其中有两个名称相同的文件(尽管在不同的文件夹中)?
utility.cpp
定义了命名空间foo_ns
下的所有内容,而第二个要编译的utility.cpp
则编译了命名空间bar_ns
下的所有内容。当编译第二个utility.cpp
时,编译器会覆盖utility.obj
文件……等到链接器启动时,.obj
文件中只有bar_ns
命名空间下的内容可用。 - Agnel Kurian