у меня есть MFC проект, который использует libpqxx. Все настройки по умолчанию.
Режим релиза работает должным образом, как я ожидал. Но когда я переключаюсь в режим отладки, он показывает исключение и говорит отладочное утверждение:
Самое интересное, что если я использую Shared DLL вместо Static (конечно же, в Debug), это работает!
По сути, в Debug with Static Library это исключение / ошибка. Если я переключаюсь на Shared DLL, он снова работает. Конечно, я могу использовать расшаренный как отладочный и статический как релиз, но Это правильно?
Примечание: этот проект является базовым и новым. Я не изменил ни одного конфига из Configuratrion Manager.
Любое предложение?
Хорошо, я не уверен, если libpqxx
использует MFC или нет (а какой?). Я подозреваю, что вы выделяете некоторую память из одной кучи, а также выделяете ее из другой кучи. Смешивание версий MFC, а также статическая / нестатическая смесь MFC приведут к такому утверждению.
Не относитесь к этому как за работой на релиз сборки! Он просто не защищает себя (то есть теперь показывает любое сообщение об утверждении). Лучше всего найти причину этой проблемы, и сначала нужно найти стек вызовов (нажмите «Повторить» в этом диалоговом окне подтверждения).
Видишь ли, если libpqxx
зависит от MFC или не поддерживает смешивание статической версии MFC. Вы можете увидеть документацию libpqxx
и / или используйте Dependency Walker, чтобы узнать, использует ли библиотека MFC.
Других решений пока нет …