Эта ошибка является (почти) верным признаком того, что вы связываете две разные CRT (библиотеки времени выполнения C) с вашей программой. Каждый CRT имеет свою собственную кучу для распределения памяти. Что-то освобождается одним CRT, которое фактически было выделено другим CRT, и когда освобождающий CRT пытается добавить освобожденную память в свою собственную кучу, обнаруживает, что она там не принадлежит, вызывая утверждение.
Вероятно, ваш PCL скомпилирован для использования CRT, отличного от того, который используется в вашем проекте. Откройте решение PCL, откройте настройки проекта и проверьте настройку в C/C++ -> Генерация кода -> Библиотека времени выполнения. Затем сделайте то же самое в решении вашего собственного проекта, убедитесь, что они совпадают.
Вам также необходимо скомпилировать и PCL, и ваш проект с одной и той же версией Visual Studio (поскольку каждая новая версия поставляется с новым набором CRT... вздох).
В крайнем случае вы также можете проверить окно вывода и отметить, какие библиотеки DLL загружаются, и посмотреть, сможете ли вы обнаружить несколько несовместимых CRT. Информацию об именах файлов можно найти по адресу: https://support.microsoft.com/en-us/kb/140584 или с помощью Google.
Если вы действительно хотите использовать конкретную CRT для своего проекта, вам придется перекомпилировать PCL, чтобы использовать нужную CRT.
person
Chungzuwalla
schedule
18.02.2016