无法在 Linux 上打开 QLibrary
Can't open QLibrary on linux
当我尝试加载存储在与二进制文件相同的目录中的特定库时,出现错误:
无法加载库 uuirtdrv.so:(uuirtdrv.so:无法打开共享 目标文件:没有这样的文件或目录(
但仅限于Linux,而不是Windows。在窗户上,它就像一个魅力。
祁祁
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 将库复制到目标目录。
主.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:无法打开共享对象文件:没有这样的文件或目录(">
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
相关文章:
- 在C++/Linux中设置单调时钟的一些技巧
- Linux的Cpp上的计时器
- 在VS代码中交叉编译Windows与Linux上的MinGW的SDL程序
- 在Linux中哪里可以找到互斥、未来等的源代码
- 如何在linux终端中同时编译和运行c++代码
- 在Linux for Windows上编译C++代码时出错
- 如何找到锁定Linux futex的C++行
- 在linux上调试巨大的C++项目
- 如何处理linux终端中带有负号(-)的C++中的命令行参数
- c++方法参数只能在linux的发布模式下自行更改
- 在Linux和C++中的Windows上,散列字符串值会产生不同的输出
- 这里在 Linux 中具有"CreatePipe"和"CreateProcessW"功能吗?
- 函数在Windows或Linux上运行时表现不同
- 在Linux下捕获SIGKILL的C++程序
- 在为LINUX创建共享库时,如何避免STL的私有/弱副本
- 使用 cmake 的 Linux 终端上的"Conversion to non-scalar type is requested"错误
- 如何在CPP中创建应该在Windows和Linux上运行的套接字?
- mysql C++ connector [mysql-connector-c++-8.0.19-linux-glibc2
- 这些是什么样的错误?即使我不在 Linux 上工作,我也遇到了 Linux 错误
- 无法在 Linux 上打开 QLibrary