Я пытаюсь использовать некоторые функции, которые я создал и протестировал в отдельном приложении. Теперь, когда я пытаюсь создать DLL, я получаю несколько ошибок, утверждающих, что функция была переопределена и возвращаемые параметры не совпадают. Кажется, это единственный раз, когда я получаю эти ошибки, я протестировал его, удалив этот класс, и он прекрасно компилируется, а также автономное приложение с main.cpp, ссылающимся на них напрямую. Ниже приведены ошибки и файлы h и cpp:
Ошибка 7, ошибка C2371: «Parser :: parse»: переопределение; разные основные
Типы c: \ users \ seb \ Documents \ visual studio
2005 \ projects \ TestDLL \ TestDLL \ parser.cpp 17
Ошибка 4 ошибка C2526: «Parser :: parse»: функция связи C не может
вернуть класс C ++ 'std :: vector <_Ty>' c: \ users \ seb \ documents \ visual
studio 2005 \ projects \ TestDLL \ TestDLL \ parser.h 28
Ошибка 6, ошибка C2556: 'IDVec Parser :: parse (const char *)': перегружен
Функция отличается только типом возвращаемого значения от 'void Parser :: parse (const
char *) 'c: \ users \ seb \ Documents \ visual studio
2005 \ projects \ TestDLL \ TestDLL \ parser.cpp 17
Также найдите файл .h и функцию из .cpp:
parser.h
#ifndef PARSER_H
#define PARSER_H
#if defined DLL_EXPORT
#define TESTAPI __declspec(dllexport)
#else
#define TESTAPI __declspec(dllimport)
#endif
#include <iostream>
#include <vector>
typedef struct _ListEntry {
std::string id, path;
} ListEntry;
typedef std::vector<ListEntry> IDVec;
extern "C"
{
class TESTAPI Parser
{
public:
Parser(void);
~Parser(void);
static IDVec parse(const char* Buffer);
private:
static size_t nextLine(std::string& rstrText, size_t pos);
static std::string nextWord(std::string& rstrText, size_t pos);
static void fixOSSpecificPath(std::string& rstrPath);
};
}
#endif
Parser.cpp
IDVec Parser::parse(const char* Buffer)
{
std::string s = Buffer;
IDVec v;
// Doing stuff here
return v;
}
Спасибо за любой совет