私は再び別の問題を抱えています。今回は、.qrc(QTリソース)ファイルを含む共有ライブラリである.dllがあります。問題は、ライブラリのリソースの1つにアクセスしようとすると、機能しないことです。私は実装してみました:
Q_INIT_RESOURCE(resourcefilename)
そしてそれはまだ機能していません。(「qInitResources_resourcefilename()」が見つからないということです。)
どうでも。私は解決策を見つけました。qInitResources_name()が見つかりませんでした。そこで、共有ライブラリ内に関数を作成しました
int RmiLib::startResources(){
extern int qInitResources_rmi();
return qInitResources_rmi();
}
次に、メインアプリで、その関数を呼び出しました。機能した。
.dllがあると言っているので、Windowsを使用していると仮定します。
関数qInitResources_resourcefilenameが見つからないという同じ問題が発生しました。ライブラリに.qrcファイルがある場合、この関数は実際に共有ライブラリに存在します(マップファイルを確認してください)。問題は、この関数がエクスポートされないため、メインアプリのリンク中にリンカーが関数を見つけられないことです。次のように、共有ライブラリのエクスポートテーブルに関数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、Qt5.2.0を使用しています