#c #qt4
#c #qt4
Вопрос:
Удивительно, что приведенный ниже код генерирует исключение.
QString qtemp = QDir::tempPath();
std::string temp = qtemp.toStdString();
std::cout<<temp<<std::endl;
Когда я выполнял отладку с помощью visual studio — я ввожу значение переменной qtemp
. Но на следующем шаге я получаю НЕВЕРНЫЙ указатель от отладчика, что приводит к исключению, когда я выполняю то же самое.
Комментарии:
1. Можете ли вы опубликовать полную компилируемую программу, которая воспроизводит это (возможно, даже включает файл .pro)? Если я удалю эти строки в
main()
функции с добавлением соответствующих#include
символов, я не вижу проблемы.2. Если путь содержит символы юникода, то этот код может вызвать проблемы.
3. @ Michael Burr — К сожалению, это небольшая часть моей программы, и предоставление файла .pro было бы не идеально. Однако я попробовал, комментируя каждую вторую строку в программе, и все та же проблема остается. @wilhelmtell — каким было бы решение?
4. Вместо этого используйте
.toStdWString()
иstd::wstring
.
Ответ №1:
Это известный симптом, если вы смешиваете библиотеки DLL debug и release.
Комментарии:
1. вы, сэр, избавили меня от многих проблем