3个工程,1个是静态LIB,1个是导出的DLL,还有1个是MFC的EXE,如果3个都用MDd编译,则可以打印出崩溃的地址;但是如果都用MTd编译,MFC的EXE使用静态编译,则打印不了错误行的堆栈,有人知道是什么原因吗?
MTD编译打印如下(存在问题):
crash! (TestD.exe 00003CAF:0) (0008F69F:1) (00079463:2) (00078C9E:3) (00076440:4) (0007691E:5) (USER32.dll 00008734:6) ***MDD编译打印如下(正常):
TestServerD.exe-->CNetServerDlg::OnBnClickedStart()
?.?(0) : MFC71D.DLL-->Ordinal698()
?.?(0) : MFC71D.DLL-->Ordinal5948()
?.?(0) : MFC71D.DLL-->Ordinal5949()
?.?(0) : MFC71D.DLL-->Ordinal5969()
?.?(0) : MFC71D.DLL-->Ordinal6849()
?.?(0) : MFC71D.DLL-->Ordinal8672()
?.?(0) : MFC71D.DLL-->Ordinal1369()
?.?(0) : MFC71D.DLL-->Ordinal1591()
?.?(0) : MFC71D.DLL-->Ordinal1592()
?.?(0) : USER32.dll-->GetDC()
?.?(0) : USER32.dll-->GetDC()
?.?(0) : USER32.dll-->GetParent()
?.?(0) : USER32.dll-->SendMessageW()
?.?(0) : USER32.dll-->CreateMDIWindowA()
?.?(0) : USER32.dll-->DeregisterShellHookWindow()
?.?(0) : USER32.dll-->GetCursorFrameInfo()
?.?(0) : USER32.dll-->SoftModalMessageBox()
?.?(0) : USER32.dll-->GetDC()
?.?(0) : USER32.dll-->GetDC()
?.?(0) : USER32.dll-->GetWindowLongW()
?.?(0) : USER32.dll-->DispatchMessageW()
?.?(0) : USER32.dll-->IsDialogMessageW()
?.?(0) : USER32.dll-->IsDialogMessageA()
?.?(0) : MFC71D.DLL-->Ordinal5460()
?.?(0) : MFC71D.DLL-->Ordinal7005()
?.?(0) : MFC71D.DLL-->Ordinal7007()
?.?(0) : MFC71D.DLL-->Ordinal8662()
?.?(0) : MFC71D.DLL-->Ordinal1467()
?.?(0) : MFC71D.DLL-->Ordinal7017()
?.?(0) : MFC71D.DLL-->Ordinal1527()
?.?(0) : MFC71D.DLL-->Ordinal1469()
?.?(0) : MFC71D.DLL-->Ordinal7052()
?.?(0) : MFC71D.DLL-->Ordinal1531()
?.?(0) : MFC71D.DLL-->Ordinal7563()
?.?(0) : MFC71D.DLL-->Ordinal2657()