Я пытаюсь использовать Visual Leak Detector в своем приложении C++ (используя Visual Studio 2013), и после прочтения документации и изменения Include Directories
и Library Directories
проекта я добавляю заголовок vld.h
в один из моих файлов cpp
. Как написано в документации, я должен добавить его после всех предварительно скомпилированных заголовков в исходном коде. Но при создании проекта после добавления заголовка в исходный код я получаю следующую ошибку:
[VLD COMPILE ERROR] #include "vld.h" should appear before #include <afxwin.h> in file stdafx.h
поэтому, когда я добавляю его в файл заголовка stdafx.h, проект строится, но я получаю сообщение об ошибке выполнения:
Unhandled exception at some_memory_location (vld_x64.dll) in product_debug_build.exe. Access violation reading location some_memory_location
И когда я помещаю его перед предварительно скомпилированными заголовками в любом из моих файлов cpp
, тогда сборка пропускает включение файла заголовка vld.h
.
Но я не получаю это сообщение, когда создаю все решение, но тогда оно не работает (вероятно, потому, что я добавляю его перед предварительно скомпилированными заголовками?).
Что я здесь делаю не так?
@LicensedSlacker Уже сделал это, таким образом он строится и не выдает никаких ошибок исключения во время выполнения, но не показывает никаких утечек, даже если я вручную ввожу утечки.
Это приложение MFC?
@LicensedSlacker Да, большая часть проекта действительно использует MFC. Это огромная кодовая база. Под огромным я имею в виду кодовую базу, которая может быть у вас для базы данных, такой как Oracle.
Провел некоторое тестирование с VS2015 и VLD 2.5.1, но я не обнаружил никаких проблем с использованием VLD. В моем vld.h
прежде всего был StdAfx.h
, и это было все, что требовалось. stackoverflow.com/questions/21721088/… упомянул некоторые проблемы совместимости с VC2013, но они уже должны быть решены.
Попробуйте поместить
vld.h
в файл заголовкаStdAfx.h
, как вы это сделали, а затем в исходный файл, где используются предварительно скомпилированные заголовки.