переменная экспорта, содержащая C структуру из C ++ DLL - PullRequest
0 голосов
/ 14 июля 2020

, так что я просто мокрые ноги для файлов 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.

любая помощь будет так оценена и в любом случае извините за мой сломанный английский, спасибо!

...