【问题标题】:error LNK1169: one or more multiply defined symbols found - global function错误 LNK1169:找到一个或多个多重定义符号 - 全局函数
【发布时间】:2014-06-10 09:47:36
【问题描述】:

我有这个:

a.h

class a
{
}
void func(){} //some golobal function

b.h

include "a.h"
class b : public a
{
}

b.cpp

#include "b.h"

我得到错误:

error LNK1169: one or more multiply defined symbols found

我想我得到了错误,因为全局函数定义了两次。我尝试将extern 放在函数之前,但不起作用。我也使用#ifndef..,但仍然出现错误。如何解决这个问题?

【问题讨论】:

标签: c++ function compiler-errors


【解决方案1】:

您要么只在头文件 a.h 中声明函数并在某个 cpp 模块中定义它,要么将其定义为内联函数。例如

inline void func(){} 

否则,函数将被定义的次数与包含头文件 a.h 或 b.h 的 cpp 模块一样多。

【讨论】:

  • 我仍然无法推断为什么这会解决问题。无论如何,a.h 只包含在一个编译单元中。
  • @dbasic 那么包含main函数的模块呢?它包括 a.h 还是 b.h?
  • 这个程序可能包含也可能不包含 main 取决于它是应用程序还是某些库。必须在问题中提及。
  • @dbasic 如果链接器发出错误,则意味着至少有两个模块包含函数定义。
  • 你是对的。但是问题中缺少整个错误消息。它也可能是其他一些符号。编译器还说明了重复的符号。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2012-09-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多