我正在尝试使用我在独立应用程序中制作和测试的一些功能。现在我正在尝试创建一个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:\用户\ SEB \文档\ 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
也可以从.cpp找到.h文件和函数:
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;
}
感谢您的任何建议
答案 0 :(得分:3)
删除班级定义周围的extern "C"
。