-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

static 変数は cpp ファイルで宣言する必要があります

char* PortDialog::PortName = NULL;

スコープ解決演算子を使用してクラスのメソッド(関数)にアクセスするのと同じように

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

リンカ エラーに関して受け取った説明に加えて、ソース文字列を保持するためのメモリが割り当てられていないstrcpy宛先で呼び出すことはできないことにも注意してください。char *コンパイル (およびリンク) しますが、実行時にほぼ何でも実行できます。

于 2013-02-22T14:31:02.987 に答える
0

ヘッダーで宣言された静的変数は、cpp ファイルで初期化する必要があります。 .htm

于 2013-02-22T14:02:59.187 に答える