2010-11-30 16 views
8

Red Hat Enterprise Linux 5.2で共有ライブラリに宣言されて使用されているQtリソースを初期化する方法がわかりません。Qtリソースを共有ライブラリから初期化する方法は?

共有ライブラリにQtリソースファイルを追加し、 "resource"という接頭辞を追加し、 "files/styleSheet.xsl"というファイルを追加しました。リソースファイルの名前は "resources.qrc"です。 QFile :: existsはfalseを返しますか?問題は、Linuxの下で、あなたは同様にあなたの共有ライブラリとアプリケーションの両方でQtのリソースファイル(* .qrc)と命名していることができないということである任意のヒントや提案を事前に

MySharedLib::MySharedLib() 
{ 

    // I think Q_INIT_RESOURCE basically expands to this: 
    // The resource file is named "resources.qrc" 
    extern int qInitResources_resources(); 
    qInitResources_resources(); 

     QString resourcePath = ":/resource/files/styleSheet.xsl"; 
     if(false == QFile::exists(resourcePath)) 
     { 
     printf("*** Error - Resource path not found : \"%s\"\n", resourcePath.toLatin1().data()); 
     } 

} 

おかげで、

+0

関連:[Plugin(.so)からのQt UIのトラブルシューティング](http://stackoverflow.com/questions/5097087/) –

+0

私は不思議ですが、この問題を解決できましたか?私は非常に似た問題を抱えており、解決策を見つけることができません。 – DRAX

答えて

9

。これはWindowsでは問題ではありませんが、Linuxでは同じ名前のリソースファイルのいずれかしか読み込まれません。私は私のアプリケーションと共有ライブラリファイル "resources.qrc"の両方にリソースファイルを指定しました。私は "resourcesmylib.qrc"と "resourcesmyapp.qrc"に改名され、すべてが良かった。私はQ_INIT_RESOURCES呼び出しをライブラリに追加するか、qInitResources_resources *を呼び出す必要はありませんでした。

ソリューションLinuxで ライブラリとアプリケーションのための

  • 使用ユニークなQtのリソースファイル名。

クレジットはQt-InterestメーリングリストでJaco N.になります。ありがとう、ハコ!