0

基本上,我尝试运行的所有 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在回溯中)。

可能的问题是什么?(对不起,如果这是问错的地方)

4

3 回答 3

3

我遇到了同样的问题,最终构建了 Qt 库的调试版本来弄清楚发生了什么。Qt 库似乎假设机器上有一个 /usr/lib/libconv.dylib。对于我的机器,解决方案很简单,例如...

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

于 2011-07-20T17:33:48.560 回答
1

听起来像是一个合理的猜测。

你能编译一个在 Mac 上崩溃但在 Linux 或 Windows 上成功的测试用例吗?

当然,您可以查看源代码——Qt 函数体往往非常小且具有很高的因数,因此应该很容易看出哪里出了问题。

于 2011-07-20T12:59:48.753 回答
0

查看您的地址,我可以看到它们是 64 位的。也许您在 32 位和 64 位二进制文​​件之间存在某种类型的不兼容?

于 2011-07-20T13:03:17.233 回答