Visual C++ CRT debugging
Visual C++ CRT debugging
当我开始使用这里讨论的调试时,我遇到了一个非常严重的链接器错误。
我设法把它缩小到new ( _NORMAL_BLOCK , __FILE__ , __LINE__ )
结构。新操作员的这种过载一使用,我就得到了error LNK2005: "void __cdecl operator delete(void *,int,char const *,int)" (??3@YAXPEAXHPEBDH@Z) already defined in ...
如果我将该对象文件从链接过程中排除,它只会将我指向另一个对象文件。我还没有验证这一点,但我很确定,所有这些与MFC冲突的对象文件都使用了调试新版本的运算符。
这让我陷入了一场疯狂的追逐,因为如果你用谷歌搜索这个错误,所有的证据都会告诉你,你把CRT和MFC的东西按错误的顺序混合在一起,果不其然,这就是我所做的。
我用dumpbin /directives
浏览了我所有的对象文件和库,并确保链接的顺序是正确的,尽管如此,我从未克服这个错误。
CRT调试技术是否固有地与MFC不兼容,或者对此有解释吗?
我对MFC不是很了解,我正试图完全脱离MFC,但我希望在这之前让它发挥作用。
MFC应用程序将在调试模式下为您检测内存泄漏。要获得有关泄漏的更多信息,可以在每个文件的顶部定义新的DEBUG_new,如下所示:
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif
有关更多信息,请参阅MSDN文章MFC 中的内存泄漏检测
相关文章:
- 在调用FreeLibrary后,释放动态链接到具有相同版本的CRT堆的DLL的内存
- 使用不同的CRT将新的C++代码与旧的(二进制)组件隔离开来的最佳方法是什么
- "Unable to start debugging. No process is associated with this object." - 在Visual Studio Code中使用GDB
- 如何在 SEAL 3.1 中使用 CRT 批处理技术Microsoft?
- VS2019 - Sudo Remote Debugging on Linux with Cmake project
- sf::Windows上的音乐:api-ms-win-crt-locale-l1-1-0.dll:无法打开共享对象文件
- 阻止我的项目调用__CxxFrameHandler3(CRT函数)
- CRT 不打印内存泄漏的行号
- JNI c++ Netbeans Debugging
- 在 C++/CLI/C# 项目中启用"Native Code Debugging"导致应用程序崩溃
- CRT 检测到应用程序在堆缓冲区(新建/删除)类结束后写入内存
- Debugging ofstream.(C++)
- 使用 CRT 库 - _CrtDumpMemoryLeaks() 问题的托管C++C++内存泄漏
- 如何在没有CRT的情况下链接OBJ文件
- 编译 C++ dll Visual Studio 与 crt 库的链接错误
- 静态或动态链接到容器中运行的二进制文件的 C 运行时 (CRT)
- 如何防止C或C 程序使用CRT功能
- 为什么"Start Debugging"比VC2010中的"attach to process"慢得多?
- Visual C++ CRT debugging
- Visual C++ CRT debugging