本帖最后由 leizi_312 于 2012-03-30 17:21:35 编辑

解决方案 »

  1.   

    怀疑是RootNode内部的map在调用INTERFACE_REGISTER的时候创建,但是在调用COMPONENT_REGISTER的时候已经失效了!
      

  2.   

        if (!Boi::RootNode::GetSingletonPtr()) 
        { 
            static Boi::RootNode theRootNode; 
        }
    这段是做什么用的?
      

  3.   

    RootNode只能创建一个实例!如果RootNode没有实例化,就创建一个!
    这句是编译成DLL的,我就怀疑问题出在这里!
      

  4.   

    > BoiMain.dll!10003fc1() 
      [Frames below may be incorrect and/or missing, no symbols loaded for BoiMain.dll]
      BoiMain.dll!10002ce7() 
      BoiMain.dll!10002199() 
      ntdll.dll!7c97f39c() 
      BoiMain.dll!10031a19() 
      ntdll.dll!7c98fef9() 
      ntdll.dll!7c98ff73() 
      BoiMain.dll!10031e0d() 
      BoiMain.dll!10016ae5() 
      BoiMain.dll!10007407() 
      BoiMain.dll!10009f8f() 
      BoiMain.dll!10009d5f() 
      BoiMain.dll!10002c13() 
      msvcr80.dll!78180475() 
      msvcp80.dll!7c421201() 
      BoiMain.dll!10001dbf() 
      BoiMain.dll!1003069c() 
      BoiMain.dll!10030e00() 
      msvcp80.dll!7c422f20() 
      BoiMain.dll!10032a20() 
      VFJ-r.exe!`dynamic initializer for 'CCheckBad_register''()  Line 14 + 0x15 bytes C++
      msvcr80.dll!78131742() 
      VFJ-r.exe!__tmainCRTStartup()  Line 501 + 0xf bytes C
      kernel32.dll!7c817077()  这是调用堆栈
      

  5.   

    似乎找到问题所在了,刚试着在MDD下重新编译了我的DLL,
    把主程序Release版本也改成MDD运行就正常了。
    原因是传递的 std::string在MD下显示为Bad_PTR,在MDD下是正确的。
    不知道有什么办法解决这个问题么。晚上结贴。