Каждое приложение Qt падает в одном месте? - PullRequest
0 голосов
/ 20 июля 2011

По сути, все приложения Qt, которые я пытаюсь запустить, вылетят в одном месте:

#0  0x0000000000000000 in ?? ()
#1  0x0000000100f4f570 in QIconvCodec::createIconv_t ()
#2  0x0000000100f5043b in QIconvCodec::convertToUnicode ()
#3  0x0000000100032c7e in QString::fromLocal8Bit ()
#4  0x0000000100e7cb89 in QSystemLocale::fallbackLocale ()
#5  0x00000001000161e0 in QLocalePrivate::updateSystemPrivate ()

Я подозреваю, что это как-то связано с iconv, поскольку он не очень "стабилен" в Mac OS X. Я понятия не имею, в чем проблема, и я попытался переустановить libiconv из Macports и даже собрал это сам, и я все еще получаю ту же проблему.

Возможно, он dlsyms необходимого символа (который может отсутствовать), а затем переходит на адрес, вызывая это (отсюда 0x0000000000000000 в обратном следе).

В чем может быть проблема? (извините, если это неправильное место, чтобы спросить)

Ответы [ 3 ]

3 голосов
/ 20 июля 2011

Я столкнулся с этой же проблемой и закончил сборкой отладочной версии библиотек Qt, чтобы выяснить, что происходит.Похоже, что библиотека Qt предполагает, что на машине есть /usr/lib/libconv.dylib.Для моей машины решение было простым, как ...

sudo ln -s /usr/lib/libiconv.2.dylib /usr/lib/libiconv.dylib

1 голос
/ 20 июля 2011

Звучит как разумное предположение.

Можете ли вы скомпилировать контрольный пример, который дает сбой на Mac, но успешно выполняется на Linux или Windows?

Конечно, вы можете взглянуть на исходный код - тела функций Qt, как правило, довольно малы и очень разборчивы, поэтому должно быть легко увидеть, что не так.

0 голосов
/ 20 июля 2011

Глядя на ваши адреса, я вижу, что они 64-битные. Может быть, у вас есть какая-то несовместимость между 32 и 64-битными двоичными файлами?

...