建立一个简单的控制台程序:
#include "afx.h"
void main()
{
    str="abcdefg";
    int i
    CString str;
    i=sizeof(CString);
}
结果出现如下问题:
Linking...
nafxcwd.lib(thrdcore.obj) : error LNK2001: unresolved external symbol
__endthreadex
nafxcwd.lib(thrdcore.obj) : error LNK2001: unresolved external symbol
__beginthreadex
Debug/teststr.exe : fatal error LNK1120: 2 unresolved externals
Error executing link.exe.   如果注释掉CString类的定义及使用,则没有上述问题。
   请教高手这是怎么一回事呢?

解决方案 »

  1.   

    把你的文件名从 .cpp 改为 .c 就可以了
      

  2.   

    如果使用 .cpp,系统默认为 windows 子系统,而使用 .c,系统默认为 console 子系统
    你也可以在 project->settings -> C++ 中加入选项
    /SUBSYSTEM:console
      

  3.   

    project->settings -->general--mfc共享dll
    凡是console中使用到mfc类都要使用使用"mfc共享dll"(多线程版本的dll)
      

  4.   

    楼上的是正解
    默认情况下,console不支持MFC中的类,比如CString
      

  5.   

    #include "afx.h"改为#include "string.h"试试看.
    用到afx.h,就会有多线程的问题,修改成/MT也应该可以吧
      

  6.   

    Settings中C/C++
    Category选择 code generation
    Use runtime library选择(Debug)Multithreaded Dll
    该做法同:修改成/MT
      

  7.   

    cstring是MFC中的啊,建议你用stl
      

  8.   

    哦,我在setting里面设置了Use MFC as static library就好了,只要不用Not Use MFC就行,谢谢诸位