多个翻译单元的LNK2005错误

时间:2012-08-01 07:46:36

标签: c++ visual-studio linker

我正在编写一个小的任意精度算术库,我遇到了一个问题:

我的 exception.h exception.cpp 中有来自std::exception的异常类。 vector.h 包含 Exception.h ,而my_long.h包含 vector.h

所以问题是:当我在 main.cpp 和my_long.cpp中包含my_long.h时,我的所有函数都出现了重新定义链接器错误LNK2005异常类,这是非常合乎逻辑的,因为我将这个类包含在两个不同的翻译单元中,然后尝试将它们链接在一起。

是否有任何可能的解决方法,或者我做错了什么?

1 个答案:

答案 0 :(得分:0)

你有两个选择。您可以将my_long.h中的所有函数标记为内联,这允许多个相同的定义,或者您可以将函数定义移动到my_long.cpp并在my_long.h中为它们提供声明。

通常,为了保持头文件的可读性,除了非常小的函数之外,你应该做第二个。