共享库QT资源

时间:2012-08-25 00:11:18

标签: c++ qt resources shared

我又有了另一个问题。这次,我有一个.dll,一个包含.qrc(QT资源)文件的共享库,问题是,当我试图访问该库的一个资源时,它不起作用。 我尝试实现:

Q_INIT_RESOURCE(resourcefilename)

它仍然无法正常工作。 (它表示找不到“qInitResources_resourcefilename()”。)

2 个答案:

答案 0 :(得分:4)

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

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

然后,在主应用程序上,我调用了该函数,并且是!它奏效了。

答案 1 :(得分:1)

我将假设你使用的是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