??xml version="1.0" encoding="utf-8" standalone="yes"?>久久精品国产亚洲综合色,精品久久综合1区2区3区激情,亚洲精品乱码久久久久久蜜桃图片 http://www.shnenglu.com/softko/category/14119.html淡薄名利,修nL?/description>zh-cnThu, 19 May 2011 19:21:53 GMTThu, 19 May 2011 19:21:53 GMT60"没有扑ֈMFC80D.DLL"问题的解x??http://www.shnenglu.com/softko/archive/2011/05/17/146539.htmleircQeircQTue, 17 May 2011 01:31:00 GMThttp://www.shnenglu.com/softko/archive/2011/05/17/146539.htmlhttp://www.shnenglu.com/softko/comments/146539.htmlhttp://www.shnenglu.com/softko/archive/2011/05/17/146539.html#Feedback0http://www.shnenglu.com/softko/comments/commentRss/146539.htmlhttp://www.shnenglu.com/softko/services/trackbacks/146539.html  用VS2005调试一个程序,出现“没有扑ֈMFC80D.DLL……”的提CZɽE序不能q行Q删掉Debug文g多w新编译问题依旧,上网查了一下,有说是vs路径的原因,有说是vs没装好的原因?/font>
  ?#8220;启动调试F5”的工具图标右侧有一?#8220;解决Ҏ配置”Q无意中其中的“Debug”改ؓ“Release”QF5通过Q运行正常,目目录下生?#8220;Release”文g夹,Debug方式生成?#8220;Debug"文gҎ无用的。原因如下:
 

  DEBUG和RELEASE 版本差异及调试相关问题:
  I.         内存分配问题

  1.          变量未初始化。下面的E序在debug中运行的很好?/font>

      thing * search(thing * something)
        BOOL found;
        for(int i = 0; i < whatever.GetSize(); i++)
          {
          if(whatever[i]->field == something->field)
             { /* found it */
              found = TRUE;
              break;
             } /* found it */
           }
    if(found)
             return whatever[i];
    else
             return NULL;
  而在release中却不行Q因为debug中会自动l变量初始化found=FALSE,而在release版中则不会。所以尽可能的给变量、类或结构初始化?/font>

  2.            数据溢出的问?nbsp;
        如:char buffer[10];
             int counter;
       lstrcpy(buffer, "abcdefghik");

  在debug版中buffer的NULL覆盖了counter的高位,但是除非counter>16M,什么问题也没有。但是在release版中Qcounter可能被放在寄存器中,q样NULLp盖了buffer下面的空_可能是函数的返回地址Q这导致ACCESS ERROR?br />  3.         DEBUG版和RELEASE版的内存分配方式是不同的。如果你在DEBUG版中甌   ele ?6*sizeof(DWORD)=24bytes,实际上分配给你的?2bytesQdebug版以32bytes为单位分配)Q而在release版,分配l你的就?4bytesQrelease版以8bytes为单位)Q所以在debug版中如果你写ele[6],可能不会有什么问题,而在release版中Q就有ACCESS VIOLATE?/font>

  II.      ASSERT和VERIFY

  1.         ASSERT在Release版本中是不会被编译的?/font>

  ASSERT宏是q样定义?/font>

        #ifdef _DEBUG
        #define ASSERT(x) if( (x) == 0) report_assert_failure()
        #else
        #define ASSERT(x)
        #endif
        实际上复杂一些,但无关紧要。假如你在这些语句中加了E序中必要有的代码
  比如

  ASSERT(pNewObj = new CMyClass);

  pNewObj->MyFunction();

  q种时候Release版本中的pNewObj不会分配到空?/font>

  所以执行到下一个语句的时候程序会报该E序执行了非法操作的错误。这时可以用VERIFY Q?/font>

        #ifdef _DEBUG
        #define VERIFY(x) if( (x) == 0) report_assert_failure()
 
 
  #else

        #define VERIFY(x) (x)
        #endif
  q样的话Q代码在release版中可以执行了?/font>

  III.   参数问题Q?/font>

  自定义消息的处理函数Q必d义如下:

  afx_msg LRESULT OnMyMessage(WPARAM, LPARAM);

  q回值必LHRESULT型,否则Debug会过Q而Release出错

  IV.  内存分配

  保证数据创徏和清除的l一性:如果一个DLL提供一个能够创建数据的函数Q那么这个DLL同时应该提供一个函数销毁这些数据。数据的创徏和清除应该在同一个层ơ上?/font>

  V.     DLL的灾?/font>

  Z不同版本DLL混合造成的不一致性Ş象的UCؓ “动态连接库的地?#8220;(DLL Hell) Q甚臛_软自׃q么?http://msdn.microsoft.com/library/techart/dlldanger1.htm)?/font>

       如果你的E序使用你自qDLL时请注意Q?/font>

  1.       不能debug和release版的DLL混合在一起用。debug都是debug版,release版都是release版?/font>

  解决办法是将debug和release的程序分别放在主E序的debug和release目录?/font>


  2.         千万不要以ؓ静态连接库会解决问题,那只会情况更糟p?/font>

  VI.  RELEASE板中的调试:

  1.         ASSERT() 改ؓ VERIFY() 。找出定义在"#ifdef _DEBUG"中的代码Q如果在RELEASE版本中需要这些代码请他们移到定义外。查找TRACE(...)中代码,因ؓq些代码在RELEASE中也不被~译。请认真查那些在RELEASE中需要的代码是否q没有被便宜?/p>

  2.         变量的初始化所带来的不同,在不同的pȝQ或是在DEBUG/RELEASE版本间都存在q样的差异,所以请对变量进行初始化?/p>

  3.         是否在编译时已经有了警告?请将警告U别讄??,然后保证在编译时没有警告出现.

  VII.   Project Settings" ?"C++/C " 目下优化选项改ؓDisbaleQDebugQ。编译器的优化可能导致许多意想不到的错误Q请参考http://www.pgh.net/~newcomer/debug_release.htm

  1.         此外对RELEASE版本的Y件也可以q行调试Q请做如下改动:

  ?Project Settings" ?"C++/C " 目下设|?"category" ?"General" q且?Debug Info"讄?"Program Database"?/p>

  ?"Link"目下选中"Generate Debug Info"查框?/p>

  "Rebuild All"

  如此做法会生的一些限Ӟ

  无法获得在MFC DLL中的变量的倹{?/p>

  必须对该软g所使用的所有DLL工程都进行改动?/p>

  另:

  MS BUGQMS的一份技术文中表明Q在VC5中对于DLL?Maximize Speed"优化选项q未被完全支持,因此q将会引起内存错误ƈDE序崩溃?/p>

  2.         www.sysinternals.com有一个程序DebugViewQ用来捕捉OutputDebugString的输出,q行h后(估计是自设ؓsystem debuggerQ就可以观看所有程序的OutputDebugString的输出。此后,你可以脱VC来运行你的程序ƈ观看调试信息?/p>

  3.         有一个叫Gimpel Lint的静态代码检查工P据说比较好用。http://www.gimpel.com 不过要化$的?/p>

参考文献:

1)         http://www.cygnus-software.com/papers/release_debugging.html

2)        http://www.pgh.net/~newcomer/debug_release.htm



eircQ 2011-05-17 09:31 发表评论
]]>
使用ADO的具体方??http://www.shnenglu.com/softko/archive/2010/11/08/132988.htmleircQeircQMon, 08 Nov 2010 05:49:00 GMThttp://www.shnenglu.com/softko/archive/2010/11/08/132988.htmlhttp://www.shnenglu.com/softko/comments/132988.htmlhttp://www.shnenglu.com/softko/archive/2010/11/08/132988.html#Feedback0http://www.shnenglu.com/softko/comments/commentRss/132988.htmlhttp://www.shnenglu.com/softko/services/trackbacks/132988.html阅读全文

eircQ 2010-11-08 13:49 发表评论
]]>
LPSTR BSTR _variant_t VARIANT CComBSTR TCHARhttp://www.shnenglu.com/softko/archive/2010/06/24/118667.htmleircQeircQThu, 24 Jun 2010 13:43:00 GMThttp://www.shnenglu.com/softko/archive/2010/06/24/118667.htmlhttp://www.shnenglu.com/softko/comments/118667.htmlhttp://www.shnenglu.com/softko/archive/2010/06/24/118667.html#Feedback0http://www.shnenglu.com/softko/comments/commentRss/118667.htmlhttp://www.shnenglu.com/softko/services/trackbacks/118667.html    宽字W应该这样定义。L"sdfdf";

    T  中间cd。如果定义了 _UNICODEQ则T表示WQ如果定义了 _MBCSQ则T表示A.
    A  ANSI 字符Ԍ也就?MBCS.
    C  const 的羃?

  VARIANT 跨语acd
    VARIANT v;
    v.vt=VT_BOOL,v.boolVal=VARIANT_TRUE;
  VARIANT 现成的包装类 CComVariant、COleVariant、_variant_t
    CComVariant v1("ssd");CComVariant v2(true);CComVariant_t(100);

    BSTR是指向unicode的字W串指针。BSTR bb=::SysAllocString(L"Hello world");
    ATL中BSTR的包装类CComBSTR;

    在Windows Data Type中,LPSTRq样定义的,typedef CHAR * LPSTR.

  之间主要的{换char *,BSTR,_variant_t;
    _variant_tc?中有一个函数SetString(const char*)Q就是把char* 转换为BSTR,然后转换为_variant_t.



eircQ 2010-06-24 21:43 发表评论
]]>
þþþþþۺձ| ˳վþ99ȹ| þԭƷ| 91þþƷ91ɫҲ| 99ξþþŷƷվ | þݺҹҹav˳| þþ㽶ۺϼձ| þþƷƷ | þ99Ʒþþþþþò| Ʒþþþþ˳| þСƵ| Ʒ99þaaaһëƬ| þþþһ| ԸߺþþþþþþAAAAA| Ʒ99þþþ| һaƬþëƬ| þAvԴվ| ھƷŷþþƷ| ҹþþӰԺ| þþùһ| þ99Ʒ99þ| 18պҹþó| þþþþһƷ| þþƷݲݲ| 99ƷþþƷһ| þѾƷһ| avԾþþþa鶹| þþ97ɫ| һaƬþëƬ| þþþ޾Ʒһ| Ʒݾþþþ| þþþþùƷ볬| ŷһþ| þˬˬAV| ˾þô߽ۺ| þþƷѿ| ޹˾Ʒþþùһ | Ʒþ| ˾þô߽ۺվ| ޾Ʒtvþþþ| þ91Ʒ91|