未解析的外部符号"public static struct"
unresolved external symbol "public static 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* 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
。
- 为什么即使使用-cudart-static进行编译,库用户仍然需要链接到cuda运行时
- C++核心准则 C35 对于接口类"A base class destructor should be either public and virtual, or protected and nonv
- 如何处理 c++ 中类实现中的"invalid use of non-static data member"?
- 收到错误"invalid use of non-static data member 'stu::n' "
- 加载"D:UsersPublicDocumentsopencvbuildx64vc14binopencv_world340d.dll",找不到或打开PDB文件
- LNK1104:无法打开libpjproject-i386-Win32-vc14-Debug-Static.lib
- 我应该在 C++ 中何时/为什么使用 STATIC?
- ' class a : b ' 和 ' class a : public b ' 之间的继承类不同
- 在VS2019项目中集成ImageMagick:x64-windows-static library
- 如何处理Boost Spirit X3导致Visual Studio 2019 "static initialization order fiasco"?
- "static char __ = []() -> char"的含义
- 当初始值设定项是基类名时'initializer does not name a non-static data member or base class'错误
- 无法在 DLL 中链接 SDL2-static.lib
- 如何摆脱C++中未解析的外部符号"private: static char"错误?
- 错误LNK2019未解析的外部符号"public: __thiscall SLinkList<char>::SLinkList<char>(void)"
- C++线程"Call to non-static member function without an object argument"
- LNK2001:未解析的外部符号public:static类std::vector
- 未解析的外部符号"public static struct"
- 错误 LNK2001:未解析的外部符号"public: static class sf::RenderStates const sf::RenderStates::Default"
- 在 Visual C++ 中设置修饰符"public: static"