Форум программистов, компьютерный форум CyberForum.ru
Наши страницы

C++

Войти
Регистрация
Восстановить пароль
 
_amper
0 / 0 / 0
Регистрация: 08.05.2016
Сообщений: 48
#1

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

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

Из 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
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
27.05.2017, 22:43
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Ошибка EXCEPTION_ACCESS_VIOLATION при подключении dll модуля (C++):

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

При компиляции DLL-проекта не создается DLL-ка - C++
Добрый день. создал в Visual Studio 2010 проект C+= типа DLL. В файл dllmain.cpp вставил вот такой код: // test.cpp: определяет...

Кто может поделиться файлами ogg.dll, vorbis.dll и vorbisfile.dll - 32-х и 64-битными версиями? - C++
Движок перевожу на платформу Win64 и нужно, чтобы разрядность ЕХЕ и DLL совпадали, а в интернете искал 64-битные версии ogg.dll, vorbis.dll...

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

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

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

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
27.05.2017, 22:43
Привет! Вот еще темы с ответами:

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

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

Ошибка при вызове функции из другого модуля - C++ Builder
Ситуация до боли забитая, но не могу найти ошибку... Мне нужно из формы FFlat вызвать функцию определенную в дрогой форме FVipHomeDay....

Ошибка при подключении модуля - Python
Здравствуйте. Сейчас изучаю материал в книге Лутца и столкнулся с такой проблемой: (c программирование знаком поверхностно, c питоном...


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

Или воспользуйтесь поиском по форуму:
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru