, так что я просто мокрые ноги для файлов dll, в моем случае я пытаюсь создать список процессов с Qt как GUI, однако я хочу, чтобы эта функция хранилась в моей dll и содержала C struct, но похоже, что не работает
вот код в заголовочном файле:
это структура **
extern "C" typedef struct MY_API _SYSTEM_PROCESS_INFORMATION {
.....
.....
.....
LARGE_INTEGER Reserved7[6];
} SYSTEM_PROCESS_INFORMATION , *PSYSTEM_PROCESS_INFORMATION;
extern "C" MY_API void enumCurrentprocess();
MY_API std::vector<PSYSTEM_PROCESS_INFORMATION> runningprocesses;
, а вот определение функции в Cpp файл:
MY_API void enumCurrentprocess(){
........
........
if (NTSTATUS ntret = retval(SystemProcessInformation, SYSPI, 1024 * 1024, NULL) < 0) {
VirtualFree(buffer, 0, MEM_RELEASE);
}
do {
runningprocesses.push_back(SYSPI);
SYSPI = (PSYSTEM_PROCESS_INFORMATION)((LPBYTE)SYSPI + SYSPI->NextEntryOffset);
} while (SYSPI->NextEntryOffset);
VirtualFree(buffer, 0, MEM_RELEASE);
}
Я пытался, что функция работает нормально, но всякий раз, когда я экспортирую этот вектор, client.exe просто не может прочитать фактический вектор
в моем случае GUI пытается показать таблицу, основанную на размере вектора, как этот
enumCurrentprocess();
ui->procList->setRowCount(runningprocesses.size());
он просто ничего не сделал, я был занят моим pota p c задерживал рендеринг и ждал до 20-30 минут, но он ничего не показывает после того, как я изменил размер на нормальный int, он отлично работает xD.
любая помощь будет так оценена и в любом случае извините за мой сломанный английский, спасибо!