Visual Studio认为函数已经定义了?

时间:2013-11-16 21:56:07

标签: c++ visual-studio-2012 linker-errors lnk2005

我正在处理一个项目的两个文件,一个是我自己写的,一个是由同学写的,用作一种API。我的问题是,资源文件中定义的函数导致VS2012中的链接器错误。

我收到错误LNK2005,Microsoft定义为:

  

符号已在对象

中定义      

以装饰形式显示的给定符号是多重定义的。


资源文件ArgvFunctions.cpp中定义的三个函数是:

void convertCommandToArgv(char* commandString, char** argv[], int* argc);
void freeDynamicallyAllocatedArgv(char* argv[], int argc);

void doMain(int argc, char* argv[]);
/* renamed from "main" to avoid error. is never called: only shows implementation */

和我的实施文件中的#includes

#include <ios>
#include <iostream>
#include <fstream>
#include <string>
#include <vector>

#include "bmpfileheaders.h"  // no problems with this one
#include "ArgvFunctions.cpp"

如果有帮助:在我遇到此问题之前,我必须禁止ArgvFunctions.cpp引发的错误,因为其中的函数使用的是strtok()和{{1}的版本微软因安全问题而弃用(我确保没有任何传递给函数的东西可以惹恼他们,就像我所说的那样,所以这些问题不会成为问题;同样,我也不会有时间或知识将strncpy()替换为strtok()等等。


编辑:

哎呀,结果我对C ++一无所知。谢谢,全部。

1 个答案:

答案 0 :(得分:0)

这是错误

#include "ArgvFunctions.cpp"

删除该行。如果您仍有错误,请再次询问。将一个cpp文件包含在另一个cpp文件中永远不正确。