尝试在VC ++中使用静态类函数编译DLL时出错

时间:2011-08-31 18:17:28

标签: c++ visual-studio dll

我正在尝试使用我在独立应用程序中制作和测试的一些功能。现在我正在尝试创建一个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;
}

感谢您的任何建议

1 个答案:

答案 0 :(得分:3)

删除班级定义周围的extern "C"