我在Qt创建者中创建了一个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旁边,它似乎找到了,因为当路径错误时,我在尝试构建项目时得到一个没有这样的文件或目录错误。 有人可以解释我在这里缺少的东西吗?

谢谢你的时间。

===============>>#1 票数:3

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

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

===============>>#2 票数:2 已采纳

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

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了解更多信息。

  ask by Peter translate from so

未解决问题?本站智能推荐: