-1

我目前正在处理一个wxWidgets项目,我必须将一个wxString复制到一个静态 c 字符串,该字符串可以保存程序生命周期的值。基本上我的头文件和源文件如下所示:

*****************PortDialog.h*****************

...
static char *portName; 

-----------------------end

源文件是;

***************PortDialog.cpp*****************

.
.
. 
wxString str = "COM1"; 

strcpy(portName, (const char*)str.mbc_str()); 

---------------------end

但是我遇到了以下链接错误。

error LNK2001: unresolved external symbol "public: static char * portDialog::eportName" (?portName@portDialog@@2PADA)

有人可以向我解释我在这里犯了什么错误吗?static char *用于上述目的是否正确?

4

3 回答 3

0

静态变量应该在cpp文件中声明

char* PortDialog::PortName = NULL;

就像您使用范围解析运算符访问类的方法(函数)一样

void PortDialog::SomeFunction()
{
  //Code Goes here
}
于 2013-02-22T15:17:55.167 回答
0

在标头中声明的静态变量应在 cpp 文件中初始化,请参见http://publib.boulder.ibm.com/infocenter/lnxpcomp/v8v101/index.jsp?topic=%2Fcom.ibm.xlcpp8l.doc%2Flanguage%2Fref%2Fcplr038 .htm

于 2013-02-22T14:02:59.187 回答
0

除了您收到的有关链接器错误的解释外,您还应该知道,您不能strcpy将目标作为char *未分配内存来保存源字符串的目标调用。它会编译(和链接),但在运行时几乎可以做任何事情。

于 2013-02-22T14:31:02.987 回答