【问题标题】:Create and Use Dynamic Library with Resources in Qt在 Qt 中使用资源创建和使用动态库
【发布时间】:2017-07-13 12:14:20
【问题描述】:

我使用 Qt Creator 创建了一个动态库,该库已包含在另一个 Qt 项目中,但是当我调用具有资源文件的函数时,例如读取资源中 .txt 的内容,它不起作用。

一旦我在库项目文件夹之外的另一个文件夹中创建了*.so*.aqrc_resources.cpp 文件的动态库的构建,例如:

  • 项目文件夹:/home/username/Qt Project/library/
  • 构建文件夹:/home/username/Qt Project/build-library/

然后我将构建文件复制到库项目文件夹中,并从测试项目(Qt 应用程序项目)中,右键单击项目 -> 添加库 -> 外部库 -> 选择 .so 文件(从我刚刚复制的库项目文件夹)。

然后,在包含头文件并调用从qrc 资源中读取文件内容的函数后,它不起作用。

更新

我使用 QFile 检查它所在的资源文件是否存在,但出现此错误:QIODevice::read (QFile, ":/file.txt"): device not open

【问题讨论】:

  • 请添加更多关于使用的技术和代码的信息。最好提供一个简单的可编译示例来检查您的方法。
  • 我已经包含了更多信息,是否足够?
  • 这不是一个可编译的例子,至少对于我听说的编译器来说不是。不过,您正在尝试访问测试应用程序中的库资源文件吗?阅读doc.qt.io/qt-5/resources.html#using-resources-in-a-library
  • 不是默认选项 Compiled-In 吗?
  • 我使用 QFile 检查它所在的资源文件是否存在,但我收到此错误:QIODevice::read (QFile, ":/file.txt"): device not open跨度>

标签: qt dynamic dll shared-libraries


【解决方案1】:

【讨论】:

  • 但是Compiled-In Resources不包括库中的资源吗?
【解决方案2】:

所以我能够通过使用QFile 对象而不是ifstream 对象来打开和读取文件来解决问题。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-12-19
    • 2021-07-10
    • 2020-01-06
    • 2014-04-01
    • 1970-01-01
    • 1970-01-01
    • 2021-09-24
    相关资源
    最近更新 更多