0

以这样的形式...

#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>main.obj:错误 LNK2001:未解析的外部符号“私有:静态 wchar_t * A::outputBuffer”(?outputBuffer@A@@0PA_WA)

4

2 回答 2

3

发生链接器错误是因为您没有为A::outputBuffer任何地方提供定义。通过在文件范围内写入以下内容来解决此问题:

TCHAR A::outputBuffer[A::MAX_OUTPUT_SIZE];

的值string是意外的,因为该缓冲区未初始化;makeFoo它的参数不做任何事情,并且您不会手动初始化缓冲区。因此它可以包含任何东西(“垃圾”)。

于 2012-08-02T14:32:46.663 回答
0

添加:

TCHAR A::outputBuffer[A::MAX_OUTPUT_SIZE];

以上main()

于 2012-08-02T14:33:03.147 回答