C++ 未解析的外部符号“;“公共静态结构”;
在我的.h文件中,我有以下声明: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
/**
* 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
(nostruct
)是静态数据成员的名称。您需要使用类型和名称来定义它,并且您不能在函数中定义,您必须在文件级别进行定义:
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谢谢,但这不是代码,而是错误列表