Error 2 error LNK2005: "void __cdecl strCpy(char * &,char * &)"
(?strCpy@@YAXAAPAD0@Z) already defined in Car.obj
C:\Users\l1s15bscs0071\Documents\Visual Studio
2013\Projects\Lab11_task1\Lab11_task1\Honda.obj Lab11_task1
该项目可在以下链接中找到:https://drive.google.com/open?id=0Bw2cO-zFzAvsR1lIdURmbVJMaTA
答案 0 :(得分:0)
问题是您在标头中定义strCpy,并为Honda.obj和Car.obj多次包含它,因为您在两个.cpp文件中都包含str.h。
由于函数未声明为static,因此它不会被实例化一次,但是对于每个.OBJ中的str.h的每个包含,并且链接器将遇到strCpy()的多个定义。
#include<cstring>
static void strCpy(char *& Source, char *& Dest)
{
for (int i = 0; i < strlen(Source); i++)
{
Dest[i] = Source[i];
}
Dest[strlen(Source)] = '\0';
}
// str.h
# pragma once
void strCpy(char *& Source, char *& Dest);
// str.cpp
#include "str.h"
void strCpy(char *& Source, char *& Dest)
{
for (int i = 0; i < strlen(Source); i++)
{
Dest[i] = Source[i];
}
Dest[strlen(Source)] = '\0';
}
添加#pragma once
或非VS包含警卫#ifndef <key> #define <key> // code #endif // <key>