Linux 中 Qt 动态库的问题

Posted

技术标签:

【中文标题】Linux 中 Qt 动态库的问题【英文标题】:Issue with Qt dynamic library in Linux 【发布时间】:2012-09-12 02:16:31 【问题描述】:

我在Qt中基于QuickFIX Engine构建了一个应用程序,命名为fixapp;它工作正常。我的经纪人要求我指定一个本地端口来连接到他们。然后找不到这样的配置文件,于是修改了QuickFix的源码。

我用QuickFIX源码带来的tradeclientexecutor的例子来测试。这行得通。 tradeclient 绑定到我在配置文件中指定的本地端口。

但是,当我转向fixapp 时,使用修改后的QuickFIX 源代码构建的库,它并没有绑定到我指定的本地端口。看来我修改的部分并没有改变程序的行为。

这里有什么潜在的问题?

更新: 我试图在QuickFix 源代码中设置一些断点。在我修改的一个 cpp 文件中,我的断点被忽略了。它是调试模式,而不是发布模式。我觉得它正在运行旧的 cpp 文件并显示新的 cpp 文件。

【问题讨论】:

您收到的确切错误信息是什么? 嗨安德鲁,我没有任何错误信息。它只是没有绑定到我指定的端口。我希望 fixApp 作为 tradeclient 绑定到我指定的端口。 你打开 Qt 日志了吗? 你的意思是像 qDebug() ? 因此 Qt 库有一个调试模式,它们将记录错误消息。如果您使用的是 Qt 网络模块并且它是绑定失败的模块,那么如果您在其中打开登录,您应该会收到一条错误消息,如果您打开调试,这将有助于识别问题。 qt-project.org/doc/qt-4.8/debug.html 【参考方案1】:

提问者发现quickfix库路径是.../quickfix/lib,而我在fixapp中引用外部库的路径也是.../quickfix/lib。但是,当他检查/usr/lib 中的库路径时,该库仍然是旧库。一旦他替换了/usr/lib 中的那个,fixapp 就开始工作了。他不知道为什么他在 Qt 中引用的路径不起作用,但 /usr/lib 起作用。

【讨论】:

以上是关于Linux 中 Qt 动态库的问题的主要内容,如果未能解决你的问题,请参考以下文章

如何将qt静态库代码还原动态库

qmake使用实践:包含动态库的Qt4工程

请教关于linux中静态库与动态库的问题

QT静态库和动态库的导出

Qt动态链接库的创建和使用

QT5 动态链接库的创建和使用