Форум программистов, компьютерный форум, киберфорум
C++
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
0 / 0 / 0
Регистрация: 08.05.2016
Сообщений: 73
1

Ошибка EXCEPTION_ACCESS_VIOLATION при подключении dll модуля

27.05.2017, 22:43. Показов 1276. Ответов 0
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Из java(eclipse) вызываю dll модуль. Вроде нормально работает, но когда вызываю из нативного кода метод в классе(который должен поместить в файл строку, которую передаем из с++), то в eclipse что-то ломается и выдает вот эту дичь:
# A fatal error has been detected by the Java Runtime Environment:
#
# EXCEPTION_ACCESS_VIOLATION (0xc0000005) at pc=0x00000000778b9804, pid=352328, tid=0x0000000000059550
#
# JRE version: Java(TM) SE Runtime Environment (8.0_131-b11) (build 1.8.0_131-b11)
# Java VM: Java HotSpot(TM) 64-Bit Server VM (25.131-b11 mixed mode windows-amd64 compressed oops)
# Problematic frame:
# V [jvm.dll+0x159804]
#
# Failed to write core dump. Minidumps are not enabled by default on client versions of Windows
#
# An error report file with more information is saved as:

Эта дичь появляется после добавления следующего кода:
C++
1
2
3
                 char* s = "THE END";
        jmethodID jmi = (ev)->GetMethodID(cl, "callingFromCpp", "(Ljava/lang/String;)V");
        ev->CallStaticVoidMethod(cl, jmi, (jstring)s);
В чем проблема собственно???
Весь код: (на плюсах кинул только функцию, если еще что-то нужно, то пишите)
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
extern "C" JNIEXPORT jintArray JNICALL Java_mPack_TestDllImport_insertSort
      (JNIEnv * ev, jclass cl, jintArray a, jint size) {
        const jsize length = ev->GetArrayLength(a);
        jintArray newArray = ev->NewIntArray(length);
        jint *b = ev->GetIntArrayElements(a, NULL);
        jint *bn = ev->GetIntArrayElements(newArray, NULL);
        
        if (size == 0) { return false; }
        int tmp;
        for (int i = 1, j; i < size; ++i) // цикл проходов, i - номер прохода
        {
            tmp = b[i];
            for (j = i - 1; j >= 0 && b[j] > tmp; --j) // поиск места элемента в готовой последовательности 
                b[j + 1] = b[j];    // сдвигаем элемент направо, пока не дошли
            b[j + 1] = tmp; // место найдено, вставить элемент    
        }
        for (int o = 0, n = length - 1; o < length; o++, n--) {
            bn[n] = b[o];
        }
        ev->ReleaseIntArrayElements(newArray, bn, NULL);
        ev->ReleaseIntArrayElements(a, b, NULL);
        //-------------------------------------------------------------
        /*ofstream fout;
        fout.open("output.txt");
        fout << s;
        fout.close();*/
 
        char* s = "THE END";
        jmethodID jmi = (ev)->GetMethodID(cl, "callingFromCpp", "(Ljava/lang/String;)V");
        ev->CallStaticVoidMethod(cl, jmi, (jstring)s);
        //-------------------------------------------------------------
        return newArray;
    }
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
package mPack;
 
import java.io.File;
import java.io.IOException;
import java.io.PrintWriter;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collection;
import java.util.Collections;
import java.util.LinkedList;
import java.util.Queue;
import java.util.Scanner;
import java.util.Stack;
    
public class TestDllImport {
    static {
            System.loadLibrary("DllApp");
    }
    
    public native static int[] insertSort(int []a, int size);
    
    public static void callingFromCpp(String s) {
        try {
            System.out.println("CALLED");
            PrintWriter pw = new PrintWriter(new File("outputCpp.txt"));
            pw.println(s);
            pw.close();
        }
        catch (Exception e) {
            e.printStackTrace();
        }
    }
    
    public static void main(String[] args) {
        int [] a = {1,6,3,-6,99,-11,-83,-1,62,100};
        //System.out.print("sss ");
        a = insertSort(a, 10);
        //System.out.print("ss1s");
 
        //if(bo)
          for(int i = 0; i < 10; ++i) {
            System.out.print(a[i] + " ");
          }
        
    }
 
}
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
27.05.2017, 22:43
Ответы с готовыми решениями:

Ошибка lnk2019 при подключении к MySQL
Доброго Времени Суток! В общем, я нашел здесь небольшой туториал по взаимодействию с MySQL и...

ошибка при статическом подключении DLL
при компиляции Embarcadero Rad Studio 2010 выдает ошибку:

Отладка DLL при неявном подключении
Всем привет! Пишу на C++ Builder XE. Можно ли при неявном подключении пошагово отладить...

"Unresolved external" при подключении созданной самим dll библиотеки
Попытка выполнения программы, к которой подключена библиотека dll выдает следующую ошибку: ...

0
27.05.2017, 22:43
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
27.05.2017, 22:43
Помогаю со студенческими работами здесь

Ошибка при подключении AlphaControls C++ Builder
Скачал с сайта http://www.alphaskins.com/dwnld.php компоненты для своей версии программы. После...

Ошибка при подключении MySQL к C++ Builder 6
Знаю, что это тема много раз поднималась на множестве форумах. Но перелопатив кучу ссылок, я так и...

Ошибка при подключении шестого клиента к серверу
5 клиентов подключаются как положено, а при подключении 6-ого выскакивает следующая ошибка: Что...

Ошибка выполнения libcurl в потоке при динамическом подключении
Всех С новым годом. Имею функцию bool __fastcall TForm3::PostHesh(AnsiString Hesh) { CURL...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
1
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru