共享库 QT 资源

6

我又遇到了一个问题。这次,我有一个.dll共享库,其中包含一个.qrc(QT资源)文件,问题是,当我尝试访问库中的某个资源时,它不起作用。

我尝试实现以下代码:

Q_INIT_RESOURCE(resourcefilename)

但它仍然无法工作。 (显示 "qInitResources_resourcefilename()" 未找到。)

2个回答

4

没关系,我找到了解决方案。qInitResources_name()未找到。因此,我在共享库中创建了一个函数

int RmiLib::startResources(){
    extern int qInitResources_rmi();
    return qInitResources_rmi();
}

然后,在主应用程序中调用了该函数,耶!它起作用了。

3
我假设您使用的是Windows操作系统,因为您提到了.dll文件。
我刚遇到了同样的问题,即找不到函数qInitResources_resourcefilename。如果您的库有.qrc文件(请检查mapfile),则此函数确实存在于共享库中。问题在于,该函数没有被导出,因此链接器在链接主应用程序时无法找到它。我按照以下步骤将函数qInitResources_resourcefilename添加到共享库的导出表中。
请向共享库添加一个名为export.def的新文件。
LIBRARY
EXPORTS
  qInitResources_resourcefilename

请在您的共享库.pro文件中添加以下内容:
QMAKE_LFLAGS += /DEF:\"$${PWD}\\export.def\"
OTHER_FILES += \
    export.def

您的解决方案可以避免这个问题,因为RmiLib :: startResources包含在导出表中。

我正在使用Windows 7,MSVC 2010,Qt 5.2.0。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接