crossplatform.ru

Здравствуйте, гость ( Вход | Регистрация )

 
Ответить в данную темуНачать новую тему
AD
  опции профиля:
сообщение 28.5.2009, 18:18
Сообщение #1


Профессионал
*****

Группа: Участник
Сообщений: 2003
Регистрация: 4.2.2008
Из: S-Petersburg
Пользователь №: 84

Спасибо сказали: 70 раз(а)




Репутация:   17  


Не пойму по какой причине, но....
При каких-то неясных обстоятельствах Qt-приложение в релизном статическом режиме (раньше собиралась) стала выдавать ошибку на линковке. Типа, что нет реализации функции toStdString(). Как можно поправить эту штуку? Повторюсь то же самое приложение в том же режиме собиралась с этой функцией вполне успешно и вдруг выдает такое.

Второй вопросец:
есть ли прямая функция перевода QString в const char*?
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
kwisp
  опции профиля:
сообщение 28.5.2009, 18:28
Сообщение #2


астарожна ынтжинэр
*****

Группа: Участник
Сообщений: 1404
Регистрация: 26.11.2008
Из: ТаганрогРодинаЧехова
Пользователь №: 435

Спасибо сказали: 113 раз(а)




Репутация:   23  


Цитата(AD @ 28.5.2009, 19:18) *
есть ли прямая функция перевода QString в const char*?

qPrintable(const QStirng&) на этом форуме уже осуждалось
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
igor_bogomolov
  опции профиля:
сообщение 28.5.2009, 18:36
Сообщение #3


Профессионал
*****

Группа: Сомодератор
Сообщений: 1215
Регистрация: 22.3.2009
Из: Саратов
Пользователь №: 630

Спасибо сказали: 235 раз(а)




Репутация:   29  


Цитата(AD @ 28.5.2009, 19:18) *
есть ли прямая функция перевода QString в const char*?
http://www.prog.org.ru/index.php?topic=8930.msg50190 - читай и будь аккуратен с использованием qPrintable

Сообщение отредактировал igor_bogomolov - 28.5.2009, 18:38
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
AD
  опции профиля:
сообщение 28.5.2009, 18:52
Сообщение #4


Профессионал
*****

Группа: Участник
Сообщений: 2003
Регистрация: 4.2.2008
Из: S-Petersburg
Пользователь №: 84

Спасибо сказали: 70 раз(а)




Репутация:   17  


Спасибо.

Остался первый вопрос: с какого перепоя компилятор стал выдавать ошибки на toStdString(), если раньше не выдавал? Функцию, где эта штука происходит, я не менял!
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
IMPOMEZIA
  опции профиля:
сообщение 28.5.2009, 19:45
Сообщение #5


Студент
*

Группа: Участник
Сообщений: 42
Регистрация: 18.2.2009
Пользователь №: 560

Спасибо сказали: 2 раз(а)




Репутация:   0  


Цитата(AD @ 28.5.2009, 19:52) *
Остался первый вопрос: с какого перепоя компилятор стал выдавать ошибки на toStdString(), если раньше не выдавал? Функцию, где эта штука происходит, я не менял!

Из ассистента к этой функции
Цитата
This operator is only available if Qt is configured with STL compatibility enabled.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
ViGOur
  опции профиля:
сообщение 28.5.2009, 19:58
Сообщение #6


Мастер
******

Группа: Модератор
Сообщений: 3296
Регистрация: 9.10.2007
Из: Москва
Пользователь №: 4

Спасибо сказали: 231 раз(а)




Репутация:   40  


Цитата(igor_bogomolov @ 28.5.2009, 19:36) *
читай и будь аккуратен с использованием qPrintable
Ну это думаю должно быть понятно всем, что const char * изменять нельзя (только чтение). Иначе повторяем основы С\С++. :)

AD, как правильно сказал IMPOMEZIA, тебе нужно Qt сконфигурить, а потом скомпилить с ключиком -stl.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
kwisp
  опции профиля:
сообщение 28.5.2009, 20:25
Сообщение #7


астарожна ынтжинэр
*****

Группа: Участник
Сообщений: 1404
Регистрация: 26.11.2008
Из: ТаганрогРодинаЧехова
Пользователь №: 435

Спасибо сказали: 113 раз(а)




Репутация:   23  


Цитата(igor_bogomolov @ 28.5.2009, 19:36) *
читай и будь аккуратен с использованием qPrintable

вообще всегда будь аккуратен :)
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
igor_bogomolov
  опции профиля:
сообщение 28.5.2009, 20:31
Сообщение #8


Профессионал
*****

Группа: Сомодератор
Сообщений: 1215
Регистрация: 22.3.2009
Из: Саратов
Пользователь №: 630

Спасибо сказали: 235 раз(а)




Репутация:   29  


Цитата(ViGOur @ 28.5.2009, 20:58) *
Ну это думаю должно быть понятно всем, что const char * изменять нельзя (только чтение)
А я не про это. А про область видимости возвращаемого qPritable() значения. ;)
    QString str = QString("string");
    const char *astr = qPrintable(str);

astr - невалиден. Дальнейшее его использование может привести к крашу. Подробнее читаем по ссылке выше :)
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Гость_Гость_*
сообщение 29.5.2009, 12:04
Сообщение #9





Гости








    


Есть такая тема СТЛ и ДЛЛ, проблема в том что у ДЛЛек прилинкована своя рунтайм, чревато крахом памяти.

ЗЫ
Цитата(igor_bogomolov @ 28.5.2009, 20:31) *
astr - невалиден.

он сильно не валиден, там сразу деструктор. Это не &str[0].
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение

Быстрый ответОтветить в данную темуНачать новую тему
Теги
Нет тегов для показа


1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0


RSS Рейтинг@Mail.ru Текстовая версия Сейчас: 26.12.2024, 17:29