C++ 未解析的外部符号“;“公共静态结构”;

C++ 未解析的外部符号“;“公共静态结构”;,c++,visual-studio-2013,struct,C++,Visual Studio 2013,Struct,在我的.h文件中,我有以下声明: /** * XMLReader Class * * Defines the required function to parse and get data from XML File **/ class XMLReader { public: XMLReader(); ~XMLReader(); static BOOL XmlFinder(WCHAR* argv, const WCHAR* log,const WCHAR* P

在我的.h文件中,我有以下声明:

/**
*  XMLReader Class
*
*  Defines the required function to parse and get data from XML File
**/
class XMLReader {
public:


    XMLReader();
    ~XMLReader();

    static BOOL  XmlFinder(WCHAR* argv, const WCHAR* log,const WCHAR* Pass);
    /**
    *  Get the data from the XML Files
    *
    *  Returns Boolean if find it
    */

static  struct data
    {
        WCHAR NumProcess[100];
        WCHAR Log[100];
        WCHAR Pass[100];
        WCHAR Mail[100];
        WCHAR memLimit[100];
        WCHAR CPULimit[100];

    }data;


};
在我的.cpp文件中,我定义了数据结构并将其日化:

int  wmain(int argc, WCHAR* argv[])
{

    struct XMLReader::data;

    wmemcpy(XMLReader::data.Log, L"mama", 50);
    wmemcpy(XMLReader::data.Pass, L"am0r3", 50);
    wmemcpy(XMLReader::data.CPULimit, L"am0r3", 50);
    wmemcpy(XMLReader::data.Mail, L"am0r3", 50);
    wmemcpy(XMLReader::data.NumProcess, L"am0r3", 50);
    wmemcpy(XMLReader::data.memLimit, L"am0r3", 50);
但我在VS2013上仍然有错误LNK2001:错误3错误LNK2001:未解析的外部符号“public:static struct XMLReader::data XMLReader::data”(?data@XMLReader@@2U01@A)C:\Users\Documents\Visual Studio 2013\Projects\xmlLiteExample\C++\XmlLiteReader.obj xmllitereaderTask 及

错误4错误LNK1120:1未解析的外部C:\Users\Documents\Visual Studio 2013\Projects\xmlLiteExample\C++\Debug\xmllitereaderTask.exe xmllitereaderTask

建议

在我的.cpp文件中,我定义了数据结构并将其日化

你没有

struct XMLReader::data;
这是类型
structXMLReader::data的重新声明,不是静态类成员的定义。这种重新声明没有任何效果

XMLReader::data
(no
struct
)是静态数据成员的名称。您需要使用类型和名称来定义它,并且您不能在函数中定义,您必须在文件级别进行定义

struct XMLReader::data XMLReader::data;
不建议将
data
用作变量和结构标记的名称。事实上,不建议使用
数据
作为任何名称。它没有提供任何信息。当然,不要将任何东西用作结构标记和变量的名称。这是令人困惑的,并且只允许与模糊的C特性兼容。如果您将这些内容更改为不同的内容,您可以执行以下操作:

XMLReader::options_t XMLReader::options = { 
       L"mama", 
       L"am0r3", 
       L"am0r3", 
       L"am0r3", 
       L"am0r3"
       L"am0r3"
};
如果只有您调用了未定义的行为(您不能从只有5个字符的字符串文本中复制50个字符),那么您更愿意尝试动态初始化成员


最后但并非最不重要的一点是,不要使用字符数组。使用
std::string
。如果您必须使用(在Visual Studio中不完全符合标准)宽字符,请使用
std::wstring

好吧,您的代码中似乎“public”和“static”的拼写都不正确。在哪里?也许在title@kenhero未解析的外部符号“punlic:stati struct XMLReader::data on.objt谢谢,但这不是代码,而是错误列表