Visual Studio думает, что функции уже определены?

У меня есть два файла для проекта, над которым я работаю, один из моих собственных и другой, написанный другим студентом, который служит своего рода 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() а также strncpy() что Microsoft устарела из-за проблем с безопасностью (я уверена, что ничто из передаваемых функций не может сбить их с толку, насколько я могу судить, поэтому эти проблемы не будут проблемой в любом случае; кроме того, у меня нет время или знания, чтобы заменить strtok() с strtok_s() и так далее).


РЕДАКТИРОВАТЬ:

Ой, оказывается, я ничего не знаю о C ++. Спасибо всем.

0

Решение

Это ошибка

#include "ArgvFunctions.cpp"

удалить эту строку. Если у вас все еще есть ошибки, спросите еще раз. Никогда не правильно включать один файл cpp в другой файл cpp.

0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]