你找找VC安装时附带的MFC源码,如果找到CString类的源码,把它拷贝出来旧行乐

解决方案 »

  1.   

    不知道有没有用!
    http://www.csdn.net/expert/topic/163/163531.shtm
      

  2.   

    看来真的只有自己写了。
    CString的LPCSTR操作符重载提供的功能比较好用,但就是跟mfc42.dll分不开;
    STL中的string没有LPCSTR这样简单好用的东西。//sigh
      

  3.   

    我的经验是SDK中用CString只有死路一条,不知个位大侠有什么好办法吗?
      

  4.   

    各位,我有个好方法,绝对可用,而且非常之简单!
    只需在Project->settings->C++下的Preprocessor definitions 下加一个_AFXDLL项就可以了!
      

  5.   

    Add MFC's CString class to ATL with No MFC Dependencies
    http://codeguru.earthweb.com/atl/MFCCStringForATL.shtml
      

  6.   

    多谢各位啦!搞定了。按照masterz给的链接,从codeguru那里copy & paste了那个macro回来,运行那个macro之后在VC的目录下得到ATL\include\ATL_CString.h和ATL\src\ATL_CString.cpp,把这两个文件加到project中,并稍做如下的修改就可以了:1、在ATL_CString.h中增加下面几行:
    #include <crtdbg.h>#ifndef ATLASSERT
        #define ATLASSERT(expr) _ASSERTE(expr)
    #endif#include <tchar.h>2、把ATL_CString.cpp中的两处_Module.GetResourceInstance( )换成我自己的DLL的hInstance,hInstance的值可以在DllMain( )初始化时得到。由于我的DLL没有用ATL,没有CComModule _Module,所以要做上面的修改。如果写的是ATL project,估计不用改就可以。编译运行正常,只是生成的DLL多export出了几个函数,无大碍。release版本的ATL_CString.obj大小55K,注释掉CString中不需要的成员函数还可以再小。
    _AtlGetObjectSourceInterface@20
    _AtlIPersistPropertyBag_Load@20
    _AtlIPersistPropertyBag_Save@24
    _AtlIPersistStreamInit_Load@16
    _AtlIPersistStreamInit_Save@20再次感谢!