在Qt中調用封裝好的類,需要使用QLibrary類來加載DLL文件,并使用QLibrary::resolve()方法獲取類的指針。
下面是一個示例代碼,演示了如何在Qt中調用DLL中封裝好的類:
#include <QtWidgets>
#include "myclass.h" // 封裝好的類的頭文件
int main(int argc, char *argv[])
{
QApplication app(argc, argv);
QLibrary myLib("mydll"); // 加載DLL文件
if(!myLib.load()){
qDebug() << "Failed to load DLL";
return -1;
}
// 獲取類的指針
typedef MyClass* (*CreateMyClass)();
CreateMyClass createMyClass = (CreateMyClass)myLib.resolve("createMyClass");
if(!createMyClass){
qDebug() << "Failed to resolve function";
return -1;
}
MyClass* myClass = createMyClass(); // 創建類的實例
myClass->doSomething(); // 調用類的方法
delete myClass; // 刪除類的實例
myLib.unload(); // 卸載DLL文件
return app.exec();
}
上述代碼中,首先創建了一個QLibrary對象,通過其構造函數加載DLL文件。然后使用QLibrary::resolve()方法獲取封裝好的類的構造函數的地址,并通過函數指針創建類的實例。最后可以調用類的方法,完成相關操作。注意在使用完類的實例后,要記得刪除實例,并且在程序退出前卸載DLL文件。
需要根據實際情況修改代碼中的DLL文件名和類的名稱。
請注意,調用DLL中的類需要確保DLL文件與應用程序的架構一致,即32位應用程序使用32位DLL,64位應用程序使用64位DLL。同時要確保DLL文件在應用程序的當前目錄或系統路徑中。