当我尝试加载存储在与二进制文件相同的目录中的特定库时,出现错误:
无法加载库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:无法打开共享对象文件:没有这样的文件或目录)&#34;
答案 0 :(得分:1)
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