5

我在 Qt creator 中创建了一个 C++ 库项目。构建项目后,我有 libMylib.so、.so.1、.so.1.0、.so.1.0.0、Makefile 和 mylib.o 文件。我将库头添加到我的另一个项目中,并将路径添加到我的 .pro 文件中,如下所示:

LIBS += "/home/peter/Workspace/build-Libtester-Desktop-Release/libMyLib.so"

在构建应用程序时,我没有收到这样的文件错误,但是在运行它时,我得到了这个:

/home/peter/Workspace/build-Libtester-Desktop-Debug/Libtester: error while loading shared libraries: libMyLib.so.1: cannot open shared object file: No such file or directory

我无法理解,因为它就在它似乎找到的 .so 旁边,因为当路径错误时,我在尝试构建项目时收到没有此类文件或目录错误。有人可以解释我在这里缺少什么吗?

谢谢你的时间。

4

2 回答 2

4

幸运的是,您的问题与 Qt 和 Qt Creator 无关。该错误简单归结为LD如何在 Unix OS 系列上搜索共享库以进行动态链接。

今天,我已经回答了类似的问题,请看一下。这个问题是关于 Mac OS X 的。但是,Linux 和 Mac OS X 在您的问题的上下文中是相同的。我在底部提供了对Linux的额外解释,请注意。“它就在”旁边.so- 如果你做出这个假设,你似乎有 Windows 背景,但对于 Unix OS 系列来说这是错误的(如答案中所述)。如果您还有其他问题,请询问。

于 2013-04-17T23:31:53.310 回答
3

您错误地添加了库。你正在做:

LIBS += "/home/peter/Workspace/build-Libtester-Desktop-Release/libMyLib.so"

代替:

LIBS += -L"/home/peter/Workspace/build-Libtester-Desktop-Release" -lMyLib

第一个版本适用于 windows,但不适用于 linux。

基本上,您创建一个名为“libMyLib.so”的库,然后指定其文件夹的路径,以“-L”开头,然后在末尾执行“-lMyLib”,注意它不是“- llibMyLib”,但只是“-lMyLib”,尽管 .so 名称是“libMyLib”。

看这里:https ://wiki.qt.io/How_to_create_a_library_with_Qt_and_use_it_in_an_application了解更多信息。

于 2016-10-10T22:17:22.277 回答