Получилось добраться до функции в длл файле, теперь программа вылетает когда я пытаюсь вызвать функцию
C++ (Qt)
class clRamData
{
public:
double ramCount;
long ramAvailable;
QString ramError;
};
typedef clRamData(_stdcall *fnRamData)();
void MainWindow::getRamInfo()
{
QLibrary wmi_lib("WMI_access");
wmi_lib.load();
if (wmi_lib.isLoaded())
qDebug() << "Loaded";
else
qDebug() <<"Not Loaded";
fnRamData fn_ramData;
fn_ramData = (fnRamData)wmi_lib.resolve("ramData");
if (fn_ramData)
{
qDebug() << "ok..";
clRamData ramInfo;
qDebug() << "class created..";
ramInfo = fn_ramData(); // тут программа вылетает....
qDebug() << "function called..";
qDebug() << "ram available: " << ramInfo.ramAvailable;
}
else qDebug() << "error";
}
Если закоментировать две строчки:
C++ (Qt)
qDebug() << "function called..";
qDebug() << "ram available: " << ramInfo.ramAvailable;
то програмка запускается....
Я так понимаю, проблемма в том, что длл требует времени чтобы выполнить свою работу, а программа не даёт ему (длл) достаточно времени, на это. Поэтому программа и вылетает.
Как можно узнать когда длл будет готов дать ответ?
методом тыка удалось запустить программу, добавил ещё одну строчку
qDebug() << "ram count: " << ramInfo.ramCount;
и программа начала запускаться... вот только результат совсем не в тему получается
ram available: 0
ram count: 5.28063e-308 Что-то я никак не пойму где тут собака зарыта....