当我试图加载存储在与二进制文件相同的目录中的特定库时,我会得到一个错误:
无法加载库uuirtdrv.so:(uuirtdrv.so:无法打开共享对象文件:没有此类文件或目录)
但只在linux上,而不是在windows上。在窗户上,它就像一种魅力。
QMake
QT += core serialport
QT -= gui
CONFIG += c++11
TARGET = serial-test
CONFIG += console
CONFIG -= app_bundle
TEMPLATE = app
SOURCES += main.cpp
win32 {
dll.files += $$PWD/uuirtdrv.dll
dll.path = $$OUT_PWD
INSTALLS += dll
}
unix {
so.files += $$PWD/uuirtdrv.so
so.path = $$OUT_PWD
INSTALLS += so
}QMake将库复制到目标目录。
main.cpp
if (!QLibrary::isLibrary("uuirtdrv.so"))
{
qDebug() << "uuirtdrv does not exist.";
}
qDebug() << "Loading uuirtdrv";
QLibrary hinstLib;
hinstLib.setFileName("uuirtdrv.so");
if (hinstLib.load()) qDebug() << "uuirtdrv loaded.";
else qDebug() << hinstLib.errorString();main.cpp所做的就是检查库是否存在,然后尝试加载它。不知道这到底是怎么回事。我需要将.so放到特定的目录中吗?(文档中提到了linux上的LD_LIBRARY_PATH。)
编辑:当我添加一个绝对路径而不是相对路径时,会发生以下错误:
无法加载库/media/sf_Qt/build-serial-test-Desktop-Debug/uuirtdrv.so:(libstdc++.so.5:无法打开共享对象文件:没有此类文件或目录)“
发布于 2017-05-15 17:19:02
libstdc++.so.5:无法打开共享对象文件:没有这样的文件或目录
请安装libstdc++5 : Fedora,CentOS→# yum install compat-libstdc++-33
新Fedora:# dnf install compat-libstdc++-33
Debian,Ubuntu:apt-get install libstdc++5
https://stackoverflow.com/questions/43983501
复制相似问题