どのようにして動的リンクライブラリを呼び出すか
Qtでは、QLibraryクラスを使って動的リンクライブラリを呼び出すことができます。以下は、動的リンクライブラリの関数を呼び出す方法を示す、シンプルな例です。
#include <QtCore/QLibrary>
#include <QtCore/QDebug>
int main()
{
// 加载动态链接库
QLibrary myLib("mylibrary");
if (myLib.load()) {
// 如果加载成功,通过resolve函数获取函数指针
typedef int (*MyFunction)(int);
MyFunction myFunction = (MyFunction)myLib.resolve("myFunction");
if (myFunction) {
// 调用动态链接库中的函数
int result = myFunction(5);
qDebug() << "Result: " << result;
} else {
qDebug() << "Failed to resolve function.";
}
// 卸载动态链接库
myLib.unload();
} else {
qDebug() << "Failed to load library.";
}
return 0;
}
上の例では、QLibraryクラスのコンストラクタを使用して、”mylibrary”という名前のダイナミックリンクライブラリをロードします。そして、resolve関数を使用して、ダイナミックリンクライブラリ内の関数ポインタを取得します。この例では、ダイナミックリンクライブラリ内に”myFunction”という名前の関数があると仮定します。そうすれば、その関数ポインタを使用して、ダイナミックリンクライブラリ内の関数を呼び出すことができます。
なお、動的リンクライブラリのファイル名は、それぞれのオペレーティングシステムの命名規則に沿う必要があります。すなわち、Windowsでは動的リンクライブラリのファイル拡張子は「.dll」、Linuxでは「.so」、そしてmacOSでは「.dylib」です。
QLibrary クラスを使用する前に、プロジェクトにQtCoreモジュールを追加する必要があります。.pro ファイルに次の内容を追加します:
QT += core