相关疑难解决方法(0)

什么是外部联系和内部联系?

我想了解外部联系和内部联系及其区别.

我也想知道的意思

const默认情况下,变量内部链接,除非另有声明extern.

c++ c++-faq

318
推荐指数
8
解决办法
12万
查看次数

错误LNK2005:已定义 - C++

背景

我有一个名为PersonLibrary的项目,它有两个文件.

  1. Person.h
  2. Person.cpp

该库生成一个静态库文件.另一个项目是TestProject,它使用PersonLibrary(在VS008中添加了项目依赖项).一切正常,直到我向Person.h添加了非成员函数.Person.h看起来像

class Person
{
public:
    void SetName(const std::string name);

private:
    std::string personName_;
};

void SetPersonName(Person& person,const std::string name)
{
    person.SetName(name);
}
Run Code Online (Sandbox Code Playgroud)

Person.cpp定义了SetName函数.当我尝试从TestProject使用SetPersonName时,我收到错误LNK2005:已定义.这是我如何使用它

#include "../PersonLibrary/Person.h"
int main(int argc, char* argv[])
{
    Person person;
    SetPersonName(person, "Bill");
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

尝试了解决方法

1 - 我删除了Person.cpp并在Person.h中定义了整个类.错误消失了,一切正常.

2 - 将SetPersonName修饰符更改为static.如下所示

static void SetPersonName(Person& person,const std::string …
Run Code Online (Sandbox Code Playgroud)

c++ linker

14
推荐指数
1
解决办法
3万
查看次数

标签 统计

c++ ×2

c++-faq ×1

linker ×1