Qt + wchar_t + VS2005 |
Здравствуйте, гость ( Вход | Регистрация )
Qt + wchar_t + VS2005 |
Flex Ferrum |
28.11.2007, 3:10
Сообщение
#1
|
Студент Группа: Новичок Сообщений: 16 Регистрация: 26.11.2007 Пользователь №: 26 Спасибо сказали: 0 раз(а) Репутация: 0 |
Суть в следующем. В отличии от предыдущих версий компиляторов, в VC 8.0 интерпретацию типа wchar_t как синонима unsigned short надо включать опцией /Zc:wchar_t-. Т. е. по умолчанию wchar_t интерпретируется этим компилятором как самостоятельный тип. Несложно убедиться, что при сборке Qt эта опция явно указывается. В ряде случаев (наверное даже, в большинстве) это не вызывает особых проблем, но ровно до тех пор, пока Qt не используется в связке с другими библиотеками, как то, например, boost и stl. boost обычно компилируется без этой опции (и это правильно, на мой взгляд), STL (если используется штатная), то полностью зависит от настроек проекта. Так вот, очевидно, что в ряде случаев, совместное использование этих библиотек, собранных с опциями по умолчанию, невозможно, т. к. одни и те же объявления типов (std::wstring, например) начинают интерпретироваться по-разному, и приложение элементарно не линкуется. Я вышел из этой ситуации пересобрав Qt без указанной опции. Понятно, что сборка получилась, гм, несколько нестандартная. Так вот, собственно, вопрос - есть ли другие варианты выхода из такой ситуации?
Сообщение отредактировал Flex Ferrum - 28.11.2007, 3:11 |
|
|
Гость_Marat_* |
1.8.2008, 9:39
Сообщение
#2
|
Гости |
правильно все - нужно пересобрать Qt, поскольку по стандарту - wchar_t - отдельный тип и троли зря применили такой трюк
в папке mkspec и т.д. в зависимости от версии VS исправить Zc:wchar_t- на Zc:wchar_t только при такой опции WebKit перестает собираться - сам вчера на это наткнулся - все что нужно - посмотреть на ошибку и поправить в нужном месте QChar::toCaseFolded(бла..бла..бла) на QChar::toCaseFolded(static_cast<ushort>(бла..бла..бла)) но только в нужном месте! (там, где UChar, но не там, где UChar32) надо сказать, что правильно написаный код должен собираться и с той и с другой опцией, НО! в пределах одного исполняемого модуля (exe, dll) ДОЛЖНЫ использоваться одни и теже параметры компиляции |
|
|
Текстовая версия | Сейчас: 23.12.2024, 5:50 |