Я новичок в C ++. Я создал небольшой, очень простой инструмент c cli для доступа к устаревшей 32-битной dll сторонних разработчиков. Инструменты работают, и я получаю верные значения. Сначала я этого не заметил, но затем в программе просмотра событий windows я увидел много записей об ошибках, вызванных этим инструментом. Они появляются только после того, как код выхода уже возвращен.
Код исключения - 0xc0000005 (нарушение прав доступа, верно?), И это вызвано dll (имя сбойного модуля).
Основная часть моего кода такова:
typedef long (__cdecl *f_myFunc)(const char* smi, float_t &logi, long &numContrib, handle_t &contrib);
int main(int argc, char *argv[], char *envp[]) {
HINSTANCE hGetProcIDDLL = LoadLibrary("/path/to/dll")
f_myFunc myFunc = (f_myFunc)GetProcAddress(hGetProcIDDLL, "myFunc");
//use myFunc multiple times
FreeLibrary(hGetProcIDDLL);
return 0;
}
Ошибка возникает ровно одна за один запуск приложения. Само приложение читает файл и вызывает myFun c один раз для каждой строки в файле.
Итак, мой вопрос в том, что я не очищаю должным образом, что вызывает эту ошибку?