未解析的外部符号"public static struct"

unresolved external symbol "public static struct"

本文关键字:public static struct 符号 外部      更新时间:2023-10-16

在我的.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:静态结构XMLReader::d ata XMLReader::d ata"(?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;

这是类型struct XMLReader::data;的重新声明,而不是静态类成员的定义。这种重新声明无效。

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

struct XMLReader::data XMLReader::data;

不建议同时使用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

相关文章: