Вызов одной и той же функции дважды вызывает ошибку JNI и MASM

У меня есть функция, которая преобразует изображение с применением некоторого фильтра. Когда я запускаю его (через.dll) и интерфейс JNI в Java в первый раз, я получаю правильный результат. Но когда я хочу позвонить во второй раз, я получаю исключение нарушения прав доступа. Я могу добавить, что я не использую никакой константы в этой программе сборки. Что может вызвать такие проблемы? Я отлаживал эту программу, и кажется, что она получает неправильное значение

            mov rcx, env
            mov rdx, image
            mov r8, count
            mov rax, functionTable
            call QWORD PTR[rax + 173 * 8]
            mov rdx, rax

эти вызовы возвращают мне 0 в rax. При первом вызове возвращает правильное значение

Моя функция JNI

public native void function(int[][] image, int width, int height);

Я могу добавить, что у меня точно такой же код, но он написан на.cpp, также вызываемом Java, и там все работает отлично. MASM написан для Windows x64 ABI

0 ответов

Другие вопросы по тегам