【发布时间】:2012-08-01 07:46:35
【问题描述】:
我在写一个小的任意精度算术库,遇到了一个问题:
我的 exception.h 和 exception.cpp 中有异常类,派生自 std::exception。 Exception.h 包含在 vector.h 中,而 vector.h 又包含在 my_long.h 中。
所以问题是:当我在 main.cpp 和 my_long.cpp 中包含 my_long.h 时,我的异常类中的所有函数都会收到重定义链接器错误 LNK2005 ,这很合乎逻辑,因为我将这个类包含在两个不同的翻译单元中,然后尝试将它们链接在一起。
是否有任何可能的解决方法,或者我做错了什么?
【问题讨论】:
-
能否提供 exception.h 和 .cpp 以及确切的错误消息?
-
头文件应该只包含声明,而不是定义。如果
exception.h文件不大,您应该编辑您的问题以包含它。还将错误消息逐字添加到您的问题中。 -
也许,你的类定义依赖于一些宏,这些宏在一些翻译单元中定义,但在其他翻译单元中没有定义。请显示一些代码和确切的错误消息。
-
在 .h 文件中使用
inline关键字定义函数。
标签: c++ visual-studio linker