以这种形式......
#ifndef UNICODE
#define UNICODE
#endif
#include <Windows.h>
#include <iostream>
class A
{
public:
void makeFoo(TCHAR* output)
{
wcscpy(outputBuffer,TEXT("Hello world ♥"));
}
private:
static const int MAX_OUTPUT_SIZE=2000;
static TCHAR outputBuffer[MAX_OUTPUT_SIZE];
};
int main()
{
TCHAR string[255];
A example;
example.makeFoo(string);
MessageBox(0,string,0,0);
system("Pause");
return 0;
}
......我们有一个 链接错误!
1&gt; main.obj:错误LNK2001:未解析的外部符号“private: static wchar_t * A :: outputBuffer“(?outputBuffer @ A @@ 0PA_WA)
答案 0 :(得分:3)
发生链接器错误,因为您未在任何地方提供A::outputBuffer
的定义。通过将其写入文件范围来解决此问题:
TCHAR A::outputBuffer[A::MAX_OUTPUT_SIZE];
string
的值是意外的,因为该缓冲区未初始化; makeFoo
对其参数不执行任何操作,并且您不会手动初始化缓冲区。因此它可以包含任何东西(“垃圾”)。
答案 1 :(得分:0)
添加:
TCHAR A::outputBuffer[A::MAX_OUTPUT_SIZE];
以上main()
。